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

时间:2014-07-17 14:45:11

标签: 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';

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但对我来说这不是一个好的解决方案。我错了什么? 提前致谢

1 个答案:

答案 0 :(得分:0)

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

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