我已经看到了这个问题,但没有看到适用于我特定情况的答案。
这似乎不是大多数人遇到的范围问题,因为我可以看到分配给其var的数据表并在调试器中查看其属性。
这是使用剃刀代码的MVC4
此处发生错误var rowinfo = oTable.row(tr);
<script type="text/javascript" class="init">
$(document).ready(function () {
var oTable = $("#mainTable").dataTable();
$("#mainTable tbody").on("click", "tr", function () {
debugger;
var tr = $(this).closest("tr");
var rowinfo = oTable.row(tr);
alert(rowinfo);
});
});
这几乎是datatables页面的基本示例代码。 完整的html页面是
@model StaticAnalysis.Models.FindDriverModel
@{
ViewBag.Title = "Find a Driver";
}
<script type="text/javascript" class="init">
$(document).ready(function () {
var oTable = $("#mainTable").dataTable();
$("#mainTable tbody").on("click", "tr", function () {
debugger;
var tr = $(this).closest("tr");
var rowinfo = oTable.row(tr);
alert(rowinfo);
});
});
</script>
<h3>Find a driver</h3>
<section id="finddriver">
@using (Html.BeginForm("FindDriver", "DcbitSql", FormMethod.Post))
{
<fieldset>
@Html.LabelFor(m => m.searchfor)
@Html.TextBoxFor(m => m.searchfor)
<input type="submit" value="Search" />
</fieldset>
}
</section>
<hr/>
<div class="FindDriverResult">
@if(Model.searchfor != null)
{
<b><text>Results for @Model.searchfor</text></b>
<table id="mainTable" class="display">
<thead>
<tr>
<th>Name</th>
<th>Mfg</th>
<th>FileVersion</th>
<th>Checksum</th>
<th>TimeStamp</th>
<th>Arch</th>
@*<th>FilePath</th>*@
</thead>
<tbody>
@foreach (var item in Model.dtDetailList)
{
<tr>
<td><a href="@Url.Action( "FindDriverApisPartial", new { time =
item.timestamp,name = item.Name })" target="target">@item.Name</a></td>
@* <td>@Html.ActionLink(@item.Name,
"FindDriverApisPartial", { id = item.timestamp }, new object { target =
"apipartial" }) </td>*@
<td>@item.Mfg</td>
<td>@item.FileVersion</td>
<td>@item.Checksum</td>
<td>@item.timestamp</td>
<td>@item.Arch</td>
@* <td>@item.Path</td>*@
</tr>
}
</tbody>
</table>
}
</div>
<div id="target">
</div>
和jquery \ css \ datatable代码从公共布局页面加载_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Static Driver Analysis</title>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/dataTables")
@Styles.Render("~/Content/css")
@*@Scripts.Render("~/bundles/modernizr")*@
@* @Scripts.Render("~/bundles/bootstrap")*@
@RenderSection("scripts", required: false)
</head>
... //more html common layout bleh
我最终想要完成的是能够在数据表中选择一行获取一些列值然后调用控制器来执行新的SQL查询并将结果作为包含的部分页面加载带有附加信息的新数据表。
提前致谢!
至于我在这里使用的dataTables版本是RegisterBundles的代码。我尝试使用本地副本并在发布模式下下载1.10.3。
public static void RegisterBundles(BundleCollection bundles)
{
var dtableCdnPath = "http://cdn.datatables.net/1.10.3
/js/jquery.dataTables.min.js";
bundles.UseCdn = true;
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
// "~/Scripts/DataTables-1.10.2/jquery.dataTables.js"));
// ""));
bundles.Add(new ScriptBundle("~/bundles/dataTables",dtableCdnPath).Include(
"~/Scripts/DataTables-1.10.2/jquery.dataTables.js"));
我也愚弄了改变加载顺序,看看是否有所作为。