У меня есть бесплатная установка JqGrid таким образом, что при щелчке строки вызывается editgridrow и загружается форма. Теперь, когда пользователь изменяет значение определенного поля в форме, я хочу иметь возможность отображать / скрывать другие поля в зависимости от того, что было определено в редактируемом параметре colModel.
Я определил dataEvents в части сетки cmTemplate, чтобы любое изменение в любом месте формы вызывало событие. Я также добрался до colModel. В чем я не уверен, так это в том, как применить правило внутри ColModel к редактируемой строке.
cmTemplate: {
align: "center",
autoResizable: true,
editrules: {edithidden: true},
editoptions:{
dataEvents: [
{
type: 'change',
fn: function(e) {
var form = $(e.target).closest('form.FormGrid');
handleEvent(e.target.id,e.target.value,form[0],$(newTable).jqGrid())
}
}
]
}
},
function handleEvent(eventSource,eventSourceValue,form,grid)
{
var targets = eventSources[eventSource];
if(targets != null)
{
var colModel = grid.getGridParam("colModel");
for(var i=0; i<targets.length;i++)
{
for(var z=0; z<colModel.length;z++)
{
if(colModel[z]["name"] == targets[i])
{
if(colModel[z]["edittype"] == "select")
{
var dropdownName = "drp"+targets[i].replace("-","_");
var newOptions = buildOptions(eval(dropdownName),eventSourceValue);
$("select#"+targets[i]+".FormElement", form).html(newOptions)
}
break;
}
}
}
}
}
Я уже обработал другие выпадающие изменения в событии дескриптора, НО мне также нужно иметь возможность обрабатывать все другие изменения в форме, например, отображать поля и т. Д., Но я не хочу снова писать дублирующий код и хочу получить доступ к editOptions colModel и вызвать изменение в форме