Хотите запустить правила в опциях редактирования ColModel, когда поле изменяется при редактировании формы - PullRequest
0 голосов
/ 10 июля 2019

У меня есть бесплатная установка 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 и вызвать изменение в форме

1 Ответ

0 голосов
/ 16 июля 2019

Первый вариант - использовать событие beforeInitData (событие определено в editGridRow - см. Документы), здесь вы можете изменить тип, и ваши столбцы будут отображаться и скрываться в форме в зависимости от ваших условий

Второй вариант в вашем случае - определить пользовательскую кнопку в навигаторе и вызвать editGridRow для редактирования строки, а перед редактированием строки вы можете изменить статус переменных по своему усмотрению. Посмотрите, как использовать пользовательскую кнопку добавить здесь

Следует отметить, что приведенные выше рекомендации основаны на поддерживаемом продукте Guriddo jqGrid, так как вы используете не поддерживаемый free-jqGrid, вам следует соблюдать осторожность при их попытке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...