есть ли способ динамического изменения значений поля состояния в colModel?Допустим, у нас есть модель Col с полем типа:
... field ... name: "state",type: "select",
editoptions: {value: "0:state0;1:state1;2:state2;3:state3;4:state4"}
Таким образом, я получаю поле выбора для моих состояний с этими значениями.Но мне нужно динамически решить, какие поля выбора должны быть возможны.Если текущая строка имеет статус state0, должны отображаться только state0 и state1.Если состояние - состояние1, отображение должно быть состоянием 0, состоянием 1 и состоянием 2 и т. Д. До состояния 4, в котором должны отображаться только состояния 3 и состояния 4.
Могу ли я решить эту проблему с помощью средства форматирования или есть какой-либо другой способчтобы сделать это.
Чтобы сделать это более сложным, скажем, что отображаемые состояния обычно зависят от пользователя, который вошел в систему, в моем приложении.В некотором смысле, пользователь может видеть только состояния 0, состояние 2 и состояние 4.Это может быть сделано еще более сложным, потому что переход между state3 и state4 не разрешен текущему пользователю.
Тем не менее и сами состояния динамичны.Было бы полезно динамически сгенерировать javascript для объекта в моем приложении, которое представляет общий класс состояний, и использовать этот объект для генерации необходимого мне вывода в формататоре?Поэтому я могу инкапсулировать логику в этом объекте, то, как генерируется мой вывод, и, кроме того, я получаю только состояния, которые пользователь может видеть.
Должен заставить меня убить двух зайцев одним выстрелом.
После перечитывания я надеюсь, что ясно, что я хочу сделать, если не сказать мне, и я объясню это более подробно.
Решение для конкретной проблемы, спасибо олегу:
editoptions : {
value : function(){
//a function can be called here:
currentRow=$("#order_items").getGridParam('selrow');
currentState=$("#order_items").getCell(currentRow,"state");
nastyGeneratedThings=function(){
... do some nasty things with currentState
... and generate what you want
}
return nastyGeneratedThings
}
У меня возникли проблемы, потому что функция была вызвана только один раз.Поэтому я должен установить опцию воссоздать форму в Navgrid.
navGrid("#pager", {
edit : true,
add : true,
del : true
}, {
height : 500,
width : 500,
// recreate the form every time when edit button is clicked.
// Default is false.
recreateForm : true
}
});
После этого моя функция срабатывает каждый раз, когда я нажимаю кнопку редактировать.Надеюсь, это кому-нибудь поможет.