我只是有个好奇的问题,当我重新加载我的表时,抽签事件并不总是被触发。
这是我的桌子:
mCommissionTable = $("#CommissionTable").dataTable({ "bJQueryUI": false, "sDom": 'lfrtip', "columns": [ { "data": "CommissionId" }, { "data": "Description" }, { "data": "CommissionTypeDisplayName" }, { "data": "DivisionCode" }, { "data": "EmployeeName" }, { "data": "EmployeeNumber" }, { "data": "PeriodFrom" }, { "data": "PeriodTill" }, { "data": "ApprovalStatusDisplayName" }, { "data": "StatusDisplayName" }, { "data": "Comment" } ] });这是我的刷新:
function onButtonClickA() { mCommissionTable.fnReloadAjax("GridCommunication.aspx?do=GetCommission" + mFilter, RefreshSelectedRows); }下面是RefreshSelectedRows:
function RefreshSelectedRows() { alert('fired!'); }所以一切都很好,在我第一次点击按钮之前,表格不会被加载,每次我点击按钮,表格就会被加载。但实际上,回调(RefreshSelectedRows)并不是每次都会触发。
在DataTables.js代码中,我发现了__reload-方法,其中API一次注册回调事件,第7140行:
if (callback) {
var api = new _Api(settings);
api.one('draw', function () {
callback(api.ajax.json());
});
}当我使用Visual跟踪它并设置断点Api时,一个命令将被100%命中,因此它被注册。回调是isself (只在事件被触发时发生的情况)被随机击中。我不能复制它。就这么发生了。我按了20次按钮,15次没问题,5次没有.
我试图找到它,但据我在_fnReDraw方法中所能看到的,在这个方法中,调用了fnDraw,触发了所有的绘制事件。
所以..。窃听器?
有什么想法吗?
发布于 2014-07-28 09:45:02
找到窃听器了!这是一个旧的IE版本!
当我用IE9+开始它的时候,它就像魅力一样工作!
https://stackoverflow.com/questions/24798717
复制相似问题