一切都很好。但是当我点击那个图标时它的错误值有时在onclick函数的结果[i] [10]中无法获得id。任何人都可以告诉我我做错了什么。
success: function (response) {
debugger;
var result = response.map(function (item) {
var result = [];
// result.push(i++);
result.push(item.GunId)
result.push(item.BranchName);
result.push(item.GunSerialNo);
result.push(item.GunTypeName);
result.push(item.ModelNo);
result.push(item.CarriedBy);
result.push(item.Bullets);
result.push(item.Purpose);
result.push(item.IssueDate);
result.push(item.IssueTime);
result.push(item.EstimatedTime)
//result.push(item.a)
return result;
});
for (var i = 0; i < result.length; i++) {
result[i][0] = "<span hidden='hidden'>" + result[i][0] + "</span>";
result[i][0] = "<span>" + result[i][1] + "</span>";
result[i][1] = "<span>" + result[i][2] + "</span>";
result[i][2] = "<span>" + result[i][3] + "</span>";
result[i][3] = "<span>" + result[i][4] + "</span>";
result[i][4] = "<span>" + result[i][5] + "</span>";
result[i][5] = "<span>" + result[i][6] + "</span>";
result[i][6] = "<span>" + result[i][7] + "</span>";
result[i][7] = "<span>" + result[i][8] + "</span>";
result[i][8] = "<span>" + result[i][9] + "</span>";
result[i][9] = "<span>" + result[i][10] + "</span>";
result[i][10] = "<button type='button' title='Remarks' class='btn btn-xs btn-default' data-toggle='modal' data-target='#gun-tracking-remark-popup' onclick='OpenRemarks (result[i][0])' ><i class='fa fa-info-circle'></i></button>";
$("#GunTracking-detail-datatable").DataTable().row.add(result[i]);
}
$("#GunTracking-detail-datatable").DataTable().draw();
}
答案 0 :(得分:1)
我假设您正在使用DataTables 1.10。如果是这样,你真的在这里与你的图书馆作斗争。
首先,您可以定义您的&#34;数据 - &gt;柱&#34;使用&#34;列进行映射&#34;构造DataTable时的选项。这样您就不必像现在这样构建地图。相反,它只能读取您的数据集。 https://datatables.net/reference/option/columns.data
接下来你可以使用&#34;渲染&#34;选项&#34;列&#34;定义&#34;显示&#34;渲染每个数据项。在这里你可以用span元素包装东西以便显示,但在排序或过滤时省略它们。您可以在此处使用函数,以便可以在大多数列中重复使用相同的常规函数。 https://datatables.net/reference/option/columns.render
接下来,如果您需要对服务器的返回进行大量控制,以防您无法修改服务器端代码,则可以使用&#34; ajax&#34;来指定您自己的JQuery ajax函数。选项。 https://datatables.net/reference/option/ajax
最后,对于您的按钮点击事件,您可以使用委派的点击事件将数据表添加到页面后连接它们,如下所示:
var dataTable = $(dataTableSelector);
dataTable.on("click", "tbody tr td.buttonCellClass", function(evt) {
// Do stuff;
});
我正忙着在这个库中加入一个非常复杂的服务器端处理实现。相信我使用图书馆比使用它更容易。
编辑:忘了在&#34; columnDefs&#34;中提及您也可以为您的单元格指定类。
但是,如果您只是希望快速而肮脏的解决方案来解决您的问题。我认为代码中的问题就在这一行:
result[i][10] = "<button type='button' title='Remarks' class='btn btn-xs btn-default' data-toggle='modal' data-target='#gun-tracking-remark-popup' onclick='OpenRemarks (result[i][0])' ><i class='fa fa-info-circle'></i></button>";
您需要更改此部分:
onclick='OpenRemarks(result[i][0])'
TO:
onclick='OpenRemarks(" + result[i][0] + ")'
您在字符串文字
中拥有数组访问器EDIT2:当我需要双引号时使用单引号。