想要在表单编辑中的字段更改时在ColModel的editoptions中运行规则

时间:2019-07-10 13:36:21

标签: free-jqgrid

我有一个免费的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并触发对表单的更改

1 个答案:

答案 0 :(得分:0)

第一种选择是使用事件 beforeInitData (该事件在editGridRow中定义-请参阅docs),您可以在此处更改类型,并且列会根据您的条件在表格中显示和隐藏< / p>

您的第二个选择是在导航器中定义自定义按钮,并调用editGridRow编辑行,然后在编辑行之前可以根据需要更改变量的状态。了解如何使用custom button add here

我应该注意,以上建议基于受支持的产品Guriddo jqGrid,因为您使用了不受支持的free-jqGrid,因此在尝试使用这些时应格外小心。