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

Я изменил существующую функцию Javascript, чтобы позволить мне заполнять несколько раскрывающихся фильтров Jqgrid.Код:

 jQuery("#jQGridDemo").jqGrid({
        url: 'http://localhost:58404/JQGridHandler.ashx',
        datatype: "json",
        colNames: ['Property ID', 'Property Ref', 'Short Address', 'Scheme Code', 'Scheme Name'],
        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")

        }

.jqGrid('destroyFilterToolbar')
                .jqGrid('filterToolbar', {
                    stringResult: true,
                    searchOnEnter: false,
                    defaultSearch: "cn"
                });
        } 

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
            }
        })
    }   

Однако предоставленное имя столбца ("PropertyType") не найдено в данных Json, даже если оно существует.Исходная функция имеет явно упомянутое имя столбца и работает:

symbol = rows[i].PropertyType;

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

Пример данных:

 [{"PropertyID":1,"PropertyRef":"1","ShortAddress":"99 ROCK LANE,BODMIN,PL91 1NR","SchemeCode":"700000","SchemeName":"LODMIN","PropertyType":"HOU"} 

Спасибо

1 Ответ

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

Способ передачи строкового параметра как свойства в объекте не будет работать.

Во время выполнения это эквивалентно:

symbol = row [i]. "PropertyType"

, что неверно.

К счастью, вы можете передать его как элемент массива.Например,

symbol = row [i] [columnName];

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

symbol = row [i] ["PropertyType"];

что правильно

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