点击过滤器/搜索datatable返回没有数据
我正在使用jQuery DataTables适当显示多个(分页)数据行的表。点击过滤器/搜索datatable返回没有数据
如果我点击一行,我会弹出一个显示数据的弹出窗口,如果需要的话。
如果我翻阅我的结果,然后单击一行,就会弹出一个显示所需数据的弹出窗口。
我可以根据需要输入名称来过滤结果。
但是,如果我筛选我的结果,然后单击一行,弹出窗口中就是空的数据。
为什么?甚至不知道如何调试。
ShowNewContactDialog: function() {
egn.bwm("Loading...");
egAjax.json('Services/foo.asmx/GetContacts',
{ 'state': objCustomer.State, 'membership': objCustomer.Member },
function (result) {
egn.Unblock();
$('#ContactTable').dataTable({
'bJQueryUI': true,
'bAutoWidth': false,
'bDestroy': true,
'bServerSide': false,
'bProcessing': true,
'sPaginationType': 'full_numbers',
'aaData': result.aaData,
'oLanguage': {
'sZeroRecords': 'No records to display',
'sInfo': 'Showing _START_ to _END_ of _TOTAL_ entries'
},
'fnRowCallback': function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
$(nRow).click(function() {
objCustomer.SelectContact(aData);
});
return nRow;
},
"aoColumns": [
{
"sTitle": "First Name",
"sName": "FirstName",
"mDataProp": "FirstName"
},
{
"sTitle": "Last Name",
"sName": "LastName",
"mDataProp": "LastName"
},
{
"sTitle": "Email Address",
"sName": "EmailAddress",
"mDataProp": "EmailAddress"
},
{
"sTitle": "Phone Number",
"sName": "BusPhone",
"mDataProp": "BusPhone"
},
]
});
$('#btnSelectCust').hide();
$('#ContactDialog').dialog('open');
});
}
原因
选项fnRowCallback
指定回调函数是不恰当的地方附加Click事件处理程序,因为它被称为每当行绘制时间。
SOLUTION
删除fnRowCallback
选项,并使用下面的代码,就应该对数据表1.9和1.10的工作。
$('#ContactTable').dataTable({
// ... skipped ...
});
$('#ContactTable tbody').on('click', 'tr', function(){
var data = $('#ContactTable').dataTable().fnGetData(this);
objCustomer.SelectContact(data);
});
DEMO
见this jsFiddle代码和演示。
我想我没有正确版本的DataTable,因为我刚刚收到一条错误,提示“on”不受支持。 –
@ ChrisG.Williams,['on'](http://api.jquery.com/on/)是jQuery方法不是DataTables,所以只要包含jQuery,就应该有它。 –
你可以添加数据表初始化代码吗? – markpsmith
上面加了代码 –
我假设'objCustomer.SelectContact(aData)'是弹出窗口?我认为你必须使用Firebug或类似的功能来调试该功能,看看发生了什么。 – markpsmith