我正在使用jquery datatable插件在jquery UI对话框中显示表格。以下是我调用以绘制表格的函数。
在对话框中,我有另一个按钮,它具有事件处理程序来获取筛选器的值并调用相同的函数,使用新的筛选器。新加载的表总是从服务器带来更多的行。
除了一个奇怪的问题以外,一切都很好。每当绘制新的行数更多的表时,只有与先前表相等的行数可供选择。
我的意思是假设我加载了包含5行的表,按下按钮为表格带来新的数据集。表格被加载了8行。但现在我只能选择前5行。其余的都会导致Firebug中未知位置相关的错误。
非常感谢任何在这方面提供帮助的人。
编辑:以下是试图访问所选行的代码。
function listPtCharges(filter){
var chgTable;
chgTable =
$('#chargeTable').dataTable({
"bJQueryUI": true,
"bDestroy": true,
"sDom": 'tT',
"bSort": false,
"bAutoWidth": false,
"sAjaxSource": "/ajax/ptchglist.php",
"sAjaxDataProp": "Records",
"fnServerData": function ( sSource, aoData, fnCallback ) {
aoData.push( { "name": "acctno", "value": $("#curAcctno").val() } );
aoData.push( { "name": "ins_id", "value": $("#ins_id").val() } );
aoData.push( { "name": "filter", "value": filter } );
$.ajax( {
"dataType" : 'json',
"type" : "POST",
"url" : sSource,
"data" : aoData,
"success" : fnCallback
} );
} ,
"aoColumns":
[
{"bVisible":false},
{"sWidth": 55},
{"sWidth": 30},
{"sWidth": 40},
{"sWidth": 125},
{"sWidth": 50},
{"sWidth": 50},
{"sWidth": 20},
{"bVisible":false} // allowed
],
"oTableTools": {
"sRowSelect": chgSelctionTyp,
"sSwfPath": "/swf/copy_csv_xls_pdf.swf",
"aButtons": []
}
});
}
在打开对话框后立即调用此函数。以下是打开对话框并加载表格的代码行。
var oTT = TableTools.fnGetInstance( 'chargeTable' );
if(oTT)
oTT.fnSelectNone();
$( "#chargeList" ).dialog( "open" );
listPtCharges();
在对话框中,我有另一个按钮,它具有事件处理程序来获取筛选器的值并调用相同的函数,使用新的筛选器。新加载的表总是从服务器带来更多的行。
除了一个奇怪的问题以外,一切都很好。每当绘制新的行数更多的表时,只有与先前表相等的行数可供选择。
我的意思是假设我加载了包含5行的表,按下按钮为表格带来新的数据集。表格被加载了8行。但现在我只能选择前5行。其余的都会导致Firebug中未知位置相关的错误。
非常感谢任何在这方面提供帮助的人。
编辑:以下是试图访问所选行的代码。
var oTT = TableTools.fnGetInstance( 'chargeTable' );
var aData = oTT.fnGetSelectedData();
这也是jQuery DataTables的一部分,可以在Firebug中显示错误信息。
"fnIsSelected": function ( n )
{
var pos = this.s.dt.oInstance.fnGetPosition( n );
return (this.s.dt.aoData[pos]._DTTT_selected===true) ? true : false;
},
在单击不可点击的行后,会显示以下错误。
类型错误:this.s.dt.aoData[pos] 未定义
我猜测aodata的长度仍然与之前加载的表相同。
bind
或click
而不是on
或delegate
,那个选择代码在哪里? - Daniel