使用setColProp更改jqgrid工具栏过滤器中的搜索选项

使用setColProp更改jqgrid工具栏过滤器中的搜索选项,jqgrid,Jqgrid,我正在使用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'; va

我正在使用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”没有效果。我读过,但它对我来说不是一个好的解决方案。我错了什么?
提前感谢

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

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