我阅读了有关冷冻柱的所有帖子。但我仍然无法解决我的问题。
当我调用setFrozenColumns时,我的列已经冻结,但是另一个列标题被添加到网格中。所以列标题比列多一个。如何解决这个问题。这是我对代码的过度看法。
makeJqueryGridInstance(grid, gridSettings);
window.prepareSortableColumns(grid);
makefrozenColumns(grid);
function makeFrozenColumn( grid )
{
var colmodel = grid.jqGrid('getGridParam', 'colModel');
if (colmodel[0].name === 'cb')
{
grid.jqGrid('setColProp', colmodel[0].name, { frozen: true });
grid.jqGrid('setFrozenColumns');
fixPositionsOfFrozenDivs.call(grid[0]);
}
}
function prepareSortableColumns(grid)
{
var gridSettings = grid.data('settings');
var gridId = gridSettings.gridId;
var columnHeaders = $("#" + "gview_" + gridId.replace("#", "")).find(".ui-jqgrid-htable > thead > tr > th");
var colModel = grid[0].p.colModel;
$.each(columnHeaders, function (index, columnHeader)
{
if (colModel[index].sortable == false)
{
$(columnHeader).find("div").removeClass("ui-jqgrid-sortable");
}
});
}
第一次,它工作正常,列已冻结。
但是第二次调用prepareSortableColumns(grid)时,columnHeader只有一个colModel(我通过devTools调试)。所以我得到的错误就是那个特殊的columnHeader sortable是未定义的。
任何人都可以帮助我。提前谢谢。
答案 0 :(得分:0)
prepareSortableColumns
的代码似乎错了。在使用冻结柱的情况下,它不是针对潜水添加的(有关更多详细信息,请参阅the answer并使用开发人员工具检查网格的结构)。您可以尝试使用grid[0].grid.headers
数组,而不是像执行此操作那样选择columnHeaders
。
此外,删除ui-jqgrid-sortable
课程一般都是错误的。由于名称,课程的含义经常被误解。不可排序的列也必须具有该类。您需要做的是在标题上设置CSS样式cursor: default
。有关相应的代码示例,请参阅the old answer。