0

我正在尝试jqgrid在 loadComplete 方法上向表中添加自定义滚动条,如下所示: $(".ui-jqgrid-bdiv").mCustomScrollbar();

它对我来说很好,但如果有冻结的列,我会收到这个错误: Cannot read property 'rows' of undefined

也许有人可以帮助我解决这个问题?谢谢

这是我的代码:

const colModel = [
    {
        name: "select",
        width: 35,
        frozen: true,
    },
    {
        name: "name",
        width: 80,
        label: "NAME",
        fixed: true,
        frozen: true,
    },
    {
        name: "date_saved",
        width: 130,
        label: "DATE SAVED"
    },
    {
        name: "company",
        width: 130,
        label: "COMPANY"
    },
];

export const refreshSavedContacts = () => 
    $.getJSON('/endpoint')
        .success(({ data }) => $("#jqGrid").jqGrid('clearGridData').jqGrid('setGridParam', { data }).trigger('reloadGrid'))
        .error((error) => console.error("error: " + error));

export const savedContacts = () => {
    $("#jqGrid").jqGrid({
        autoencode: false,
        colModel,
        sortIconsBeforeText: true,
        viewsortcols: [true, "vertical", true],
        autowidth: true,
        shrinkToFit: false,
        cmTemplate: { editable: true, autoResizable: true },
        iconSet: "jQueryUI",
        autoResizing: { compact: true },
        inlineEditing: { keys: true, position: "afterSelected" },
        sortname: "invdate",
        sortorder: "desc",
        height: 230,
        multiselect: true,
        multiselectPosition: "none",
        loadComplete: () => $(".ui-jqgrid-bdiv").mCustomScrollbar(),
    })
    $("#jqGrid").jqGrid('setFrozenColumns');
}
4

1 回答 1

0

你用的是不支持的jqGrid版本——free-jqGrid,建议你改用支持的Guriddo jqGrid。

使用带有冻结列的自定义滚动条需要覆盖网格滚动功能。我不确定 free-jqGrid 中是否更改了原始滚动代码,但您必须查看函数scrollGrid

实际上,当滚动 body div 时,您应该滚动冻结的 div。在 Guriddo jqGrid 中是这样的(在 scrollGrid 函数中)。

if(p.frozenColumns) {
    $(grid.fbDiv).scrollTop( grid.bDiv.scrollTop );
}

此外,您应该查看 setFrozenColumns 方法,以便在水平滚动运行时更改代码。

换句话说,这不是一项微不足道的任务。

于 2020-11-25T14:06:32.310 回答