【问题标题】:change searchoptions in jqgrid toolbar filter with setColProp使用 setColProp 更改 jqgrid 工具栏过滤器中的搜索选项
【发布时间】:2014-07-17 14:45:10
【问题描述】:

我正在使用 jqGrid 4.4.5 和工具栏过滤器。网格可以根据条件重新加载(例如收件箱或发件箱信件)。我使用列的选择选项。我需要更改“的选择选项”类型'列。例如,如果网格显示'收件箱信'然后'选择选项'显示'A,B'否则显示'C,D'。 我使用此代码创建网格:

function creatGrid() {

var inboxSearchOptions = 'A:A;B:B;All:';//inbox Options
var inboxEditOptions = 'A:A;B:B';

var outboxSearchOptions = 'C:C;D:D;ALL:';
var outboxEditOptions = 'C:C;D:D';

grid.jqGrid({
    url: 'jqGridHandler.ashx',
    datatype: 'json',
    width: 100,
    height: 200,
    colNames: ['Email', 'Subject', 'Type', 'ID'],
    colModel: [
        { name: 'Email', width: 100, sortable: false, },
        { name: 'Subject', width: 100, sortable: false, },
        {
            name: 'Type',
            width: 100,
            search: true,
            formatter: 'select',
            edittype: 'select',
            editoptions: { value: (($.cookie("calledFrom") == "inbox") ? inboxEditOptions : outboxEditOptions), defaultValue: 'ALL' },
            stype: 'select',
            searchoptions: { sopt: ['eq', 'ne'], value: (($.cookie("calledFrom") == "inbox") ? inboxSearchOptions : outboxSearchOptions) },
        },
        { name: 'ID', width: 100, sortable: false, hidden: true, key: true },
    ],
    rowNum: 20,
    loadonce: true,
    rowList: [5, 10, 20],
    recordpos: "left",
    ignoreCase: true,
    toppager: true,
    viewrecords: true,
    multiselect: true,
    sortorder: "desc",
    scrollOffset: 1,
    editurl: 'clientArray',
    multiboxonly: true,
    jsonReader:
    {
        repeatitems: false,
    },
    gridview: true,
}

}

然后我使用此代码重新加载网格:

function doReloadMainGrid() {

switch (($.cookie("calledFrom")) ) {
case "inbox":
    {
        window.grid.setColProp("Type", {
            searchoptions: {
                value: inboxSearchOptions,
            },
            editoptions: {
                value: inboxEditOptions
            },                    
        });
    }
    break;
case "outbox":
    window.grid.setColProp("Type", {
        searchoptions: {
            value: outboxSearchOptions,
        },
        editoptions: {
            value: outboxEditOptions
        },                    
    });
    break;
}

var url = createUrl();
window.grid.setGridParam({ datatype: 'json' });
window.grid.setGridParam({ url: url });
window.grid.trigger("reloadGrid", { current: true });

}

但是'setColProp'没有效果。我读了this answer,但这对我来说不是一个好的解决方案。我错了什么? 提前致谢

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    setColProp 不要更改现有过滤工具栏。如果您只是从 cookie 或 localStorage 获取值,那么最好在之前执行此操作,过滤器工具栏将由 filterToolbar 方法创建。

    您可以使用destroyFilterToolbar 使用colModel 中的新值重新创建过滤器工具栏。如果您必须使用旧版本的 jqGrid,您可以按照 the answer 说明如何将代码 destroyFilterToolbar 添加到旧版本的 jqGrid。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-29
      • 2015-05-29
      • 1970-01-01
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多