带有网址数据源的Jqgrid动态过滤器

时间:2018-11-23 08:31:28

标签: filter drop-down-menu jqgrid

我有一个Jqgrid,如下:

 jQuery("#jQGridDemo").jqGrid({
            url: 'http://localhost:58404/JQGridHandler.ashx',
            colNames: ['Property ID', 'Property Ref', 'Short Address', 'Scheme Code', 'Scheme Name', 'Property Type', 'Tenure Type', 'Status', 'Management Cost','Rent Charge Month','SC Charge Month'],
            colModel: [
                        { name: 'PropertyID', index: 'PropertyID', width: 70, align: "left", stype: 'text', sortable: true},
                        {name: 'PropertyType',width: 80},
                        { name: 'TenureType', index: 'TenureType', width: 80, align: "center",  sortable: true },
                        { name: 'Status', index: 'Status', width: 75,  align: "center", sortable: true },
            ],

该网格有效,并填充有URL返回的Json。 但是,我正在尝试在PropertyType列上实现动态填充的下拉过滤器,并一直在这里查看Oleg的答案:How to add dynamic filter drop down using Jqgrid?

因此,我添加了一个“ beforeProcessing”功能:

 beforeProcessing: function (data) {
                var propertyMap = {}, propertyValues = ":All", rows = data.rows, i, symbol;
                for (i = 0; i < rows.length; i++) {
                    symbol = rows[i].Symbol;
                    if (!propertyMap.hasOwnProperty(symbol)) {
                        propertyMap[symbol] = 1;
                        propertyValues += ";" + symbol + ":" + symbol;
                    }
                }
                $(this).jqGrid("setColProp", 'PropertyType', {
                    stype: "select",
                    searchoptions: {
                        value: propertyValues
                    }
                }).jqGrid('destroyFilterToolbar')
                    .jqGrid('filterToolbar', {
                        stringResult: true,
                        searchOnEnter: false,
                        defaultSearch: "cn"
                    });
            },

我的问题是,如何将URL返回的数据传递给“ beforeProcessing:函数(数据)”-

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您的数据没有rows属性,则可以像这样修改您的初始代码:

 beforeProcessing: function (data) {
                var propertyMap = {}, propertyValues = ":All", rows = data, i, symbol;
                for (i = 0; i < rows.length; i++) {
                    symbol = rows[i].Symbol;
                    if (!propertyMap.hasOwnProperty(symbol)) {
                        propertyMap[symbol] = 1;
                        propertyValues += ";" + symbol + ":" + symbol;
                    }
                }
....

唯一与原始代码不同的地方是替换

行= data.rows

使用

行=数据,