Раскрывающийся фильтр Jqgrid не обновляется после установки значений фильтра - PullRequest
0 голосов
/ 28 ноября 2018

Я работал над сеткой с обеспечением нескольких динамически заполненных фильтров (функция getDropDownValues).У меня проблема в том, что имя столбца, передаваемое как «строка», не найдено для функции setColProp.Это мой код:

var lastsel2
    jQuery("#jQGridDemo").jqGrid({
        url: 'http://localhost:58404/JQGridHandler.ashx',
        datatype: "json",
        colNames: ['Property ID', 'Property Ref', 'Short Address', 'Scheme Code', 'Scheme Name', 'Property Type'],
        colModel: [
            { name: 'PropertyID', index: 'PropertyID', width: 70, align: "left", stype: 'text', sortable: true},
            { name: 'PropertyRef', index: 'PropertyRef', width: 75, align: "left", stype: 'text', sortable: true},
            { name: 'ShortAddress', index: 'ShortAddress', width: 200,  align: "center", sortable: true},
            { name: 'SchemeCode', index: 'SchemeCode', width: 80, align: "center", sortable: true },
            { name: 'SchemeName', index: 'SchemeName', width: 80, align: "center",  sortable: true },
            { name: 'PropertyType',width: 80},
        ],
        beforeProcessing: function (data) {
            getDropDownValues(data, "PropertyType")
            $(this).jqGrid('destroyFilterToolbar').jqGrid('filterToolbar', {
                stringResult: true,
                searchOnEnter: false,
                defaultSearch: "cn"
            });
         },
         onSelectRow: function(id){
             if(id && id!==lastsel2){
                jQuery('#jQGridDemo').jqGrid('restoreRow',lastsel2);
                jQuery('#jQGridDemo').jqGrid('editRow',id,true);
                lastsel2=id;
             }
         },
         rowNum: 30,
         editable: true,
         mtype: 'GET',
         loadonce: true,
         rowList: [30, 40, 50],
         pager: '#jQGridDemoPager',
         sortname: 'PropertyId',            
         viewrecords: true,
         sortorder: 'desc',
         caption: "Property Details",
         editurl: 'http://localhost:58404/JQGridHandler.ashx'
     });

         function getDropDownValues(data, columnName) {
             var propertyMap = {}, propertyValues = ":All", rows = data, i, symbol;
             for (i = 0; i < rows.length; i++) {
                symbol = rows[i][columnName];
                if (!propertyMap.hasOwnProperty(symbol)) {
                    propertyMap[symbol] = 1;
                    propertyValues += ";" + symbol + ":" + symbol;
                }
             }
            $(this).jqGrid("setColProp", 'columnName', {
                stype: "select",
                searchoptions: {
                    value: propertyValues
                }
            })
         }

Кто-нибудь знает, как я могу передать имя столбца, чтобы он мог быть расположен?

1 Ответ

0 голосов
/ 29 ноября 2018

Проблема, которая у вас есть, именно в этой строке кода:

...
    $(this).jqGrid("setColProp", 'columnName',
...

, но проблема не в параметре columnName, а в способе, которым вы вызываете метод setColProp.

The $(это) в коде jqGrid в большинстве случаев ссылается на объект jqGrid, но в случае внешней функции, как вы делаете, она ссылается на объект функции, а не на сетку, и, следовательно, код не работает.Для работы вашего кода вы должны заменить $ (this) на jQuery ("# ​​jQGridDemo"), то есть

function getDropDownValues(data, columnName) {
    var propertyMap = {}, propertyValues = ":All", rows = data, i, symbol;
    for (i = 0; i < rows.length; i++) {
        symbol = rows[i][columnName];
        if (!propertyMap.hasOwnProperty(symbol)) {
            propertyMap[symbol] = 1;
            propertyValues += ";" + symbol + ":" + symbol;
        }
    }
    $(#jQGridDemo).jqGrid("setColProp", 'columnName', {
        stype: "select",
        searchoptions: {
            value: propertyValues
        }
    })
}

Протестировал код с новым исправлением, и он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...