Опция динамического выбора 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: Один, 2: Два" и т.д. Это работает отлично, но параметры заселены на один щелчок позади - т.е. я нажимаю на AccountID в строке 1, а раскрывающийся список пуст, однако, когда я затем нажимаю на AccountID в строке 3, параметры, заданные в строке 1, отображаются в строка 3 клик. И так далее. Так что всегда один клик позади.

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

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

1 ответ

Вы можете использовать параметр 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 ​​().

licensed under cc by-sa 3.0 with attribution.