jqGrid динамическая избранная опция

Я создаю jqgrid с выпадающими столбцами, и я использую редактирование ячейки. Мне нужны опции выпадающих столбцов измениться динамично, и я попытался реализовать это путем установки столбца, чтобы быть:

{ name: "AccountLookup", index: "AccountLookup", width: 90, editable: true, resizable: true, edittype: "select", formatter: "select" },

и затем в beforeCellEdit событии я имею:

beforeEditCell: function(id, name, val, iRow, iCol) {
        if(name=='AccountLookup') {             
            var listdata = GetLookupValues(id, name);
            if (listdata == null) listdata = "1:1";                              
            jQuery("#grid").setColProp(name, { editoptions: { value: listdata.toString()} })                                
        }
    },

GetLookupValues просто возвращает строку в формате "1:One; 2:Two" и т.д. Это хорошо работает однако, опции заполняются один щелчок позади - т.е. я нажимаю на AccountID последовательно 1, и выпадающее пусто, однако когда я затем нажимаю на AccountID последовательно 3 опции, я установил в строке, 1 щелчок показывают в строке 3 щелчка. И так далее. Таким образом, всегда один щелчок позади.

Есть ли другой способ достигнуть того, в чем я нуждаюсь? Bacially, который всегда изменяют выпадающие отображенные опции и я должен загрузить их, поскольку пользователь вводит ячейку для редактирования. Возможно, я могу так или иначе достигнуть избранное управление в beforeEditCell событии и вручную ввести его значения вместо того, чтобы использовать вызов setColProp? Раз так я мог получить пример выполнения, этому нравится?

Другая вещь - если выпадающее пусто и пользователь, не отменяет редактирование ячейки, сценарий сетки бросает ошибку. Я использую редактирование clientarray, если это имеет значение.

10
задан Brian Tompsett - 汤莱恩 13 November 2015 в 16:56
поделиться

1 ответ

Ваш код не делает то, что я думаю, вы думаете, что это делает. Линия для элемента в Z: будет итации через Z , каждый раз, когда изготовление элемент , равный одному одному элементу Z . Поэтому оригинал элемент , следовательно, перезаписан, прежде чем с ним что-либо сделаю.

Я думаю, что вы хотите что-то вроде этого:

item = [0,1,2,3,4,5,6,7,8,9]

for element in item:
    if element not in z:
        print element

, но вы могли бы легко сделать это как:

[x for x in item if x not in z]

или (если вы не возражаете в том, чтобы потерять дубликаты не уникальных элементов):

set(item) - set(z)
-121--982926-

Вы можете использовать опцию DataInit, как это:

{ name: "AccountLookup", index: "AccountLookup", width: 90,
    editable: true, resizable: true, edittype: "select", formatter: "select",
    editoptions: { dataInit: function( elem )
    {
        $(elem).empty()
            .append("<option value='1'>Apples</option>")
            .append("<option value='2'>Oranges</option>");
    } } }

просто замените параметры статических яблок и апельсинов с помощью функции GetLookupValues ​​().

3
ответ дан 4 December 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: