JqG​​rid - 冻结列

时间:2014-10-24 08:58:40

标签: jqgrid

我阅读了有关冷冻柱的所有帖子。但我仍然无法解决我的问题。

当我调用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是未定义的。

任何人都可以帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

prepareSortableColumns的代码似乎错了。在使用冻结柱的情况下,它不是针对潜水添加的(有关更多详细信息,请参阅the answer并使用开发人员工具检查网格的结构)。您可以尝试使用grid[0].grid.headers数组,而不是像执行此操作那样选择columnHeaders

此外,删除ui-jqgrid-sortable课程一般都是错误的。由于名称,课程的含义经常被误解。不可排序的列也必须具有该类。您需要做的是在标题上设置CSS样式cursor: default。有关相应的代码示例,请参阅the old answer