【问题标题】:put jqgrid properties in a common variable and reuse them?将 jqgrid 属性放在一个公共变量中并重用它们?
【发布时间】:2015-04-15 20:00:06
【问题描述】:

我在一个 ASP.NET 网页中有 10 个 jqgrid,每个 jqgrid 向用户显示不同的数据。

除了 colNames、colModel、pager 和 sortname 属性,所有其他属性都相同。请参阅下面的代码,

  datatype: "local",
        mtype: "GET",
        cmTemplate: { sortable: true, resizable: true },
        height: 'auto',
        altRows: true,
        altclass: '',
        pgbuttons: false,
        pgtext: "",
        gridview: true,
        loadonce: true,
        shrinkToFit: false,
        pager: gridPager,
        autoencode: true,
        sortname: 'Id',
        width: $('.grid-wrapper').width() - 20,
        emptyrecords: 'No records found',
        viewrecords: true,
        sortorder: "desc",
        scrollrows: true,
        loadui: 'disable',      
        toppager: true,

是否可以将上述所有属性放在一个公共变量中,并在所有 10 个不同的网格中重用该变量?

这个想法是节省一些空间并在一个地方进行更改。

注意:我使用的是 jqgrid 插件 4.6.0。

已应用的解决方案:

在我的 js 文件顶部添加了以下代码,并从所有 10 个 jqgrid 中删除了相同的属性。工作得很好!

//DEFAULTS
$.extend($.jgrid.defaults, {
    datatype: "local",
    mtype: "GET",
    cmTemplate: { sortable: true, resizable: true },
    height: 'auto',
    altclass: '',
    pgbuttons: false,
    pgtext: "",
    gridview: true,
    loadonce: true,
    shrinkToFit: false,
    autoencode: true,
    emptyrecords: 'No records found',
    viewrecords: true,
    sortorder: "desc",
    scrollrows: true,
    loadui: 'disable'
});

【问题讨论】:

    标签: javascript jquery asp.net jqgrid


    【解决方案1】:

    是的,您可以使用 jQuery 来实现。 jquery.extend 只需将所有 jqGrid 中相同的属性放在一个对象 defaultOptions 中即可。 然后可以在specificOptions中为某个jqgrid指定具体的选项。下面的函数将具体合并到 defaultOptions 中。 如果 specificOptions 对象包含也在 defaultOptions 对象中的属性,那么它将覆盖它, 否则它将添加到选项对象中。

    var options= $.extend( true, defaultOptions, specificOptions);
    

    【讨论】:

    • 可以使用specificOptions 扩展$.jgrid.defaults 对象。 它将覆盖 jqGrid 使用的默认值。因此,在创建每个网格时只需使用非常用选项 colNamescolModelpagersortname
    • @Legends,添加了在问题部分应用的解决方案。完成当前任务后,我将添加 jsFillter。
    • @Vim:问题的“已应用解决方案”部分就是我的意思。您仍然需要在每个网格中包含 colModel。我建议您将其尽可能小。不使用值与name 相同的index。我建议您将colModel 项目的常用设置定义为列模板,并在colModel 中包含template 属性以引用标准设置。有关详细信息,请参阅我的old post。列模板的使用将使代码更短、更易读、更易于维护。
    • @Oleg:是的,我已经在使用日期列的列模板。一个认为我不清楚的是,“不使用与名称相同的值的索引。”。在我的 colModal 中,我是这样使用的,{ name: "LastUpdateDateTime", index: "LastUpdateDateTime", jsonmap: "DB.LastUpdateDateTime", template: dateTemplate }。这是正确的方法吗?
    • @Vim:不客气!我建议您另外尝试free jqGrid。这是我在更改 jqGrid 的许可证后现在开发的 fork(参见 readmewiki)。您可以直接从 GitHub(参见 here)或 CDN 尝试最新代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2011-11-30
    • 2012-08-06
    • 2020-06-10
    • 2015-10-22
    • 2016-11-02
    • 2012-09-05
    相关资源
    最近更新 更多