点击过滤器/搜索datatable返回没有数据

问题描述:

我正在使用jQuery DataTables适当显示多个(分页)数据行的表。点击过滤器/搜索datatable返回没有数据

  1. 如果我点击一行,我会弹出一个显示数据的弹出窗口,如果需要的话。

  2. 如果我翻阅我的结果,然后单击一行,就会弹出一个显示所需数据的弹出窗口。

  3. 我可以根据需要输入名称来过滤结果。

但是,如果我筛选我的结果,然后单击一行,弹出窗口中就是空的数据。

为什么?甚至不知道如何调试。

 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'); 

      }); 
     } 
+1

你可以添加数据表初始化代码吗? – markpsmith

+0

上面加了代码 –

+0

我假设'objCustomer.SelectContact(aData)'是弹出窗口?我认为你必须使用Firebug或类似的功能来调试该功能,看看发生了什么。 – markpsmith

原因

选项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代码和演示。

+0

我想我没有正确版本的DataTable,因为我刚刚收到一条错误,提示“on”不受支持。 –

+0

@ ChrisG.Williams,['on'](http://api.jquery.com/on/)是jQuery方法不是DataTables,所以只要包含jQuery,就应该有它。 –