我有一个免费的JqGrid设置,其方式是调用行的click,editgridrow并加载表单。现在,当用户更改表单上某个字段的值时,我希望能够根据colModel的editable参数中定义的内容显示/隐藏其他字段。
我已经在网格的cmTemplate部分中定义了dataEvents,以便表单上任何位置的任何更改都将触发该事件。我也进入了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;
}
}
}
}
}
我已经处理了处理事件中的其他下拉更改,但是我还需要能够处理表单的所有其他更改,例如显示字段等,但是我不想再次编写重复的代码并想要访问colModel的editOptions并触发对表单的更改
答案 0 :(得分:0)
第一种选择是使用事件 beforeInitData (该事件在editGridRow中定义-请参阅docs),您可以在此处更改类型,并且列会根据您的条件在表格中显示和隐藏< / p>
您的第二个选择是在导航器中定义自定义按钮,并调用editGridRow编辑行,然后在编辑行之前可以根据需要更改变量的状态。了解如何使用custom button add here
我应该注意,以上建议基于受支持的产品Guriddo jqGrid,因为您使用了不受支持的free-jqGrid,因此在尝试使用这些时应格外小心。