我一定遗漏了一些东西,因为我有另一个以相同方式构建的控件,但没有这个问题。我有一个通过 .NET 的 registerClientScriptInclude 注册的 jQuery 网格控件。两个网格上的所有内容都正常工作,但我正在调用 Datatables KeyTable 库中的一个函数,当用户通过网格键入并到达表格行的最末端时,该函数会强制页面更改,将它们移动到下一页。
当我注册这些控件时,它看起来像这样:
var lookupGrid = registerGrid('pageContent_tbl1',...)
var lookupGrid2 = registerGrid('pageContent_tbl2',...)
网格代码在一个嵌入资源的 JS 文件中:
var registerGrid = function (table, ...) {
grid = {
"oTable": $("#" + table).dataTable({
"bProcessing": true,
...
}),
"focusPostDraw": function (position) {
var drawCB = function () {
if (position === 'top') {
keys.fnSetPosition($('#' + table + " tbody tr:first td.canEdit:first ")[0].cellIndex, 0);
keys.fnRemoveFocus($('#' + table + " tbody tr:last td.canEdit:last "));
} else if (position === 'bottom') {
var oSettings = inlineGrid.oTable.fnSettings();
keys.fnSetPosition($('#' + table + " tbody tr:last td.canEdit:last ")[0].cellIndex, oSettings._iDisplayLength - 1);
keys.fnRemoveFocus($('#' + table + " tbody tr:first td.canEdit:first "));
} else {
// Do Nothing
}
grid.setInlineGridHandler(function () { });
};
grid.setInlineGridHandler(drawCB);
}
};
return grid;
}
当我调用 focusPostDraw 时,一切看起来都很棒,但是当我调用时:
grid.setInlineGridHandler(drawCB);
网格变量实际上是指向网格的lookupGrid2 实例,而不是lookupGrid。奇怪的是,表变量被设置为lookupGrid 的表变量的ID。到底是怎么回事?有人知道吗?