javascript - 在 dataTables 库中加载数据时添加用于编辑/删除的新列
问题描述
我有一个dataTables表,它的数据是通过 ajax 调用加载的。每行有 5 列。配置如下:
<table id="table" class="table table-bordered table-hover" style="width: 100%">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.FirstName)</th>
<th>@Html.DisplayNameFor(model => model.LastName)</th>
<th>@Html.DisplayNameFor(model => model.PersonnelId)</th>
<th>@Html.DisplayNameFor(model => model.NationalId)</th>
<th>@Html.DisplayNameFor(model => model.Companies)</th>
<th>Operations</th>
</tr>
</thead>
</table>
对于初始化我使用:
var table = $('.table').DataTable({
"proccessing": true,
"serverSide": true,
"ajax": {
url: "server_api.php",
type: 'POST'
},
"columns": [
{ "data": "FirstName" },
{ "data": "LastName" },
{ "data": "PersonnelId" },
{ "data": "NationalId" },
{ "data": "Companies" }
]
});
解决方案
我解决了这个问题。要将数据添加到其他列,您需要
- 初始化时添加一列
- 填充rowCallback函数中的列单元格。
代码是:
var table = $('.table')
.DataTable({
"proccessing": true,
"serverSide": true,
"ajax": {
url: "server_api.php",
type: 'POST'
},
"columns": [
{ "data": "FirstName" },
{ "data": "LastName" },
{ "data": "PersonnelId" },
{ "data": "NationalId" },
{ "data": "Companies" },
{ "render" : function() {return ""; }
],
"rowCallback": function (row, data) {
var additionalColIdx = 5; // Index of new column
$(`td:eq({additionalColIdx})`, row).html("<a href=\"edit.php/" + data.Id "\">Edit</a>" + " / " +
"<a href=\"delete.php/" + data.Id + "/" + "\">Delete</a>");
}
});
推荐阅读
- reactjs - 使用 react-native-router-flux 无法正确显示导航栏和选项卡
- c++ - 使用 OpenGL 绘制一个块
- excel - 如何自动将文本粘贴到多行的末尾?
- python - PIP:“无法卸载'ipython'。它是一个distutils安装的项目,因此我们无法准确确定......”
- python - pip install scikit-learn 错误
- javascript - 有没有办法在数组值中调用一次函数并使用两次返回值?
- javascript - 不使用 windows.print() 打印输入文本框的列表
- assembly - 如何将位范围读入寄存器?
- css - 内联块非替换元素的对齐框
- angular - DatePipe 在 Angular 6 中无法正常工作