Jquery 使用Ajax数据源时的数据表排序
我是Datatable新手,正在尝试配置Datatable,以便它使用ajax获取数据,将其显示为复选框、锚点和选项卡,并允许用户对其进行排序。 我有ajax和格式化部分,但是当我尝试对复选框排序时,它什么也不做。我查了一下,从中取出了排序处理程序: 分类代码:Jquery 使用Ajax数据源时的数据表排序,jquery,jquery-plugins,datatable,Jquery,Jquery Plugins,Datatable,我是Datatable新手,正在尝试配置Datatable,以便它使用ajax获取数据,将其显示为复选框、锚点和选项卡,并允许用户对其进行排序。 我有ajax和格式化部分,但是当我尝试对复选框排序时,它什么也不做。我查了一下,从中取出了排序处理程序: 分类代码: /* Create an array with the values of all the checkboxes in a column */ $.fn.dataTableExt.afnSortData['dom-che
/* Create an array with the values of all the checkboxes in a column */
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function (oSettings, iColumn) {
var aData = [];
$('td:eq(' + iColumn + ') input', oSettings.oApi._fnGetTrNodes(oSettings)).each(function () {
aData.push(this.checked == true ? "1" : "0");
});
return aData;
}
用于创建复选框的代码:
$('#example').dataTable({
"bProcessing": true,
"sAjaxSource": "sources/myData.json",
"sAjaxDataProp": "items",
"aoColumns": [
{
"mData": function (source, type, val) {
if (source.Published)
return '<input type="checkbox" checked="checked"/>';
else
return '<input type="checkbox" />';
},
//"sType": "dom-checkbox",
"sSortDataType": "dom-checkbox"
//, "bSortable": false
},
{ "mData": "Author" },
{
"mData": function (source, type, val) {
return '<a href="' + source.Href + '">' + source.$name + '</a>';
}
}
]
});
请注意,您编写的是标准JavaScript,而不是jQuery。如果它引用的是jQuery对象而不是DOM元素,则checked将是未定义的,因为jQuery对象没有checked属性。如果这是jQuery对象,可以尝试以下示例:
this.prop("checked");
或
将其替换为当前排序功能中选中的this。下面是一个例子:
//Create an array with the values of all the checkboxes in a column
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function (oSettings, iColumn) {
var aData = [];
$('td:eq(' + iColumn + ') input', oSettings.oApi._fnGetTrNodes(oSettings)).each(function() {
aData.push($(this).is(':checked') == true ? "1" : "0"); //New jQuery variable here
});
return aData;
}
请注意,您编写的是标准JavaScript,而不是jQuery。如果它引用的是jQuery对象而不是DOM元素,则checked将是未定义的,因为jQuery对象没有checked属性。如果这是jQuery对象,可以尝试以下示例:
this.prop("checked");
或
将其替换为当前排序功能中选中的this。下面是一个例子:
//Create an array with the values of all the checkboxes in a column
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function (oSettings, iColumn) {
var aData = [];
$('td:eq(' + iColumn + ') input', oSettings.oApi._fnGetTrNodes(oSettings)).each(function() {
aData.push($(this).is(':checked') == true ? "1" : "0"); //New jQuery variable here
});
return aData;
}
不,这不能解决问题。th$.fn.dataTableExt.AfSensortData['dom-checkbox']似乎没有被调用。您可以上传一个JSFIDLE,我可以在其中播放它来帮助您工作吗?问题是,我不知道如何在JFIDLE中加载数据。这里是一个示例,我通过table.oApi附加数据。\u fnaddatano,这并不能解决问题。th$.fn.dataTableExt.AfSensortData['dom-checkbox']似乎没有被调用。您可以上传一个JSFIDLE,我可以在其中播放它来帮助您工作吗?问题是,我不知道如何在JFIDLE中加载数据这里是一个示例,我通过table.oApi附加数据