使用服务器端处理时的自定义渲染
Custom rendering when using server side processing
我想知道是否可以修改 table 在收到 ajax 响应后的呈现。这似乎与此处描述的 render
函数有关:https://www.datatables.net/manual/orthogonal-data.
我的服务器returns数据喜欢
{
"name":
{
id: "123456",
value: "Tiger Nixon"
}
}
我想向每个名称单元格添加名称的 ID 作为 data-attribute
或作为 td
的 ID,并想为每个单元格添加一个 .on( "click", handler )
。
这可能吗?
提前致谢
您可以在返回的数据中使用 DT_RowData
或 DT_RowAttr
(需要 DataTables 1.10.5 或更高版本)参数将属性分配给 <tr>
元素,稍后您可以在单击时检索该元素处理程序,请参阅手册中的 Server-side processing 章节。
您也可以使用 render
方法,但可能效果不佳。我在下面假设你的 name
列的索引是 0
并且你想设置 data-id
属性。
var table = $('#example').DataTable({
"columnDefs": [{
"data": "name.value",
"targets": 0,
"render": function ( data, type, full, meta ) {
if(type === 'display'){
$('#example').DataTable().cell(meta.row, meta.col).nodes().to$().attr('data-id', full['name']['id']);
}
return data;
}
}]
});
您可以使用以下代码添加点击事件处理程序:
$(document).ready(function(){
var table = $('#example').DataTable({
// Define DataTables initialization options here
});
$('#example tbody').on('click', 'td', function(){
// Use table to access various API function
//
// For example:
// var data_cell = table.cell(this).data();
});
});
这可以通过使用 columns.createdCell 函数来实现。
Gyrocode 的答案对于旧的 DataTables 版本是正确的。
我想知道是否可以修改 table 在收到 ajax 响应后的呈现。这似乎与此处描述的 render
函数有关:https://www.datatables.net/manual/orthogonal-data.
我的服务器returns数据喜欢
{
"name":
{
id: "123456",
value: "Tiger Nixon"
}
}
我想向每个名称单元格添加名称的 ID 作为 data-attribute
或作为 td
的 ID,并想为每个单元格添加一个 .on( "click", handler )
。
这可能吗?
提前致谢
您可以在返回的数据中使用 DT_RowData
或 DT_RowAttr
(需要 DataTables 1.10.5 或更高版本)参数将属性分配给 <tr>
元素,稍后您可以在单击时检索该元素处理程序,请参阅手册中的 Server-side processing 章节。
您也可以使用 render
方法,但可能效果不佳。我在下面假设你的 name
列的索引是 0
并且你想设置 data-id
属性。
var table = $('#example').DataTable({
"columnDefs": [{
"data": "name.value",
"targets": 0,
"render": function ( data, type, full, meta ) {
if(type === 'display'){
$('#example').DataTable().cell(meta.row, meta.col).nodes().to$().attr('data-id', full['name']['id']);
}
return data;
}
}]
});
您可以使用以下代码添加点击事件处理程序:
$(document).ready(function(){
var table = $('#example').DataTable({
// Define DataTables initialization options here
});
$('#example tbody').on('click', 'td', function(){
// Use table to access various API function
//
// For example:
// var data_cell = table.cell(this).data();
});
});
这可以通过使用 columns.createdCell 函数来实现。
Gyrocode 的答案对于旧的 DataTables 版本是正确的。