【问题标题】:jqgrid Cannot read property 'rows' of undefinedjqgrid无法读取未定义的属性“行”
【发布时间】:2021-03-07 05:55:12
【问题描述】:

我正在尝试在 loadComplete 方法上向我的 jqgrid 表添加自定义滚动条,如下所示: $(".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');
}

【问题讨论】:

  • 使用哪个版本的jqGrid?
  • 4.15.5 实际上,这个问题我刚刚用数据设置这个 $(".ui-jqgrid-bdiv").mCustomScrollbar() 解决了,然后触发网格重新加载。谢谢
  • 但我遇到了一个新问题 - 冻结和未冻结表的异步滚动

标签: javascript jquery jqgrid mcustomscrollbar


【解决方案1】:

您使用的是不支持的jqGrid版本-free-jqGrid,建议您切换到支持的Guriddo jqGrid。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2014-09-18
    • 1970-01-01
    • 2020-04-06
    相关资源
    最近更新 更多