1

Я использую Dojo Gridx в моем проекте. Это имена моих колонок id, field1, field2, active statusЗначения столбцов не изменены после редактирования coulmn в GRIDX

У меня есть задание, при активном статусе активного столбца необходимо изменить значение активного состояния, значок столбца и поле1, значения поля2.

Например: если активным значением состояния является «Y», когда я нажимаю, то я хочу изменить значение поля1, поле2 и изменить значок активного состояния. Я могу достичь этой функциональности с помощью приведенного ниже кода.

Но здесь проблема в том, что поле1 редактируется, если я нажму активную колонку состояния без редактирования поля1, указанный ниже код работает нормально. После того, как я отредактировал, если я нажму активный столбец статуса ниже указанного кода, он не будет работать. Но значения меняются на стороне сервера, а сторона БД работает нормально. Я не знаю, в чем проблема, если кто-нибудь заставит меня понять. Я приложил свой код для справки.

require (["dojo/request", "dojo/i18n! RW/nls/appResources"], функция (запрос, расслоение) { request.get ("/ RW/rest /" + that.resourcePath, {handleAs: «J»}..), а затем ( функции (J) {

    that.JGloData=J; 
        var dataToPopulate = { 
          identifier: 'id', 
          items: that.JGloData 
        }; 
        review.app.defectClassAE.partStore = new dojo.data.ItemFileWriteStore({ 
         data : dataToPopulate 
        }); 

        review.app.defectClassAE.partStructure = [ 
        { 
         field : 'id', 
         name : that.J.defect_id, 
         width : '5%', 
         dataType : 'string', 
         alwaysEditing : false, 
         editable : false, 
        }, 
        { 
         field : 'field1', 
         name : that.J.defect_class, 
         width : '25%', 
         dataType : 'string', 
         alwaysEditing : false, 
         editable : true, 
         editor : dijit.form.Textarea, 
        }, 

        { 
         field : 'field2', 
         name : that.J.defect_activate_date, 
         width : '18%', 
         dataType : 'string', 
         alwaysEditing : false, 
         editable : false, 
        }, 
        { 
         field : 'field3', 
         name : that.J.defect_deactivate_date, 
         width : '18%', 
         dataType : 'string', 
         alwaysEditing : false, 
         editable : false, 
        }, 

        { field: 'activeStatus', name: bundle.RT_QLIST_ACTIVATE, filterable: false, width: '20%' ,editable : false, 
         widgetsInCell: true, 
         decorator: function(){ 
          return "<button data-dojo-type='dijit/form/Button' data-dojo-attach-point='btnactivate' data-dojo-props='showLabel: false' type='button'>Activate</button>"; 
          //return "<div data-dojo-type='dijit.form.Button' data-dojo-attach-point='btnactivate'></div>"; 
          }, 
         setCellValue: function(gridData, storeData, cellWidget){ 
          if(gridData == "Y"){ 
           cellWidget.btnactivate.set('iconClass', "rtIcondeactivateReviewType"); 
          }else{ 
           cellWidget.btnactivate.set('iconClass', "rtIconactivateReviewType"); 
          } 
          (function(cellWidget){ 

           dojo.connect(cellWidget.btnactivate,"onClick",function(){ 
            //var that = this; 
            var rawData = cellWidget.cell.row.rawData(); 
            var cell = cellWidget.cell; 
             var DI=""; 
             var activeStatus=""; 
             DI=rawData.DI; 
             activeStatus=rawData.activeStatus; 
             if(DI!=null && DI!=""){ 
              require(["dojo/request","dojo/i18n!RW/nls/appResources"], function(request,bundle){ 
               request.get("/RW/rest/"+that.resourcePath+"/defectActOrDea/"+DI,{handleAs : 'J'}).then(
                  function(J){ 

                   if(activeStatus=='Y' || activeStatus==""){ 
                    var deactvalues = { 
                    'activeStatus' : 'N', 
                    'field3':that.getTodayDate(), 
                    'field2':"" 
                    }; 
                    cell.row.setRawData(deactvalues); 
                   that.set('iconClass', "rtIcondeactivateReviewType"); 
                   } 
                   else{ 
                    var actvalues = { 
                      'activeStatus' : 'Y', 
                      'field2':that.getTodayDate(), 
                      'field3':"" 
                      }; 
                      cell.row.setRawData(actvalues); 
                   that.set('iconClass', "rtIconactivateReviewType") 
                   } 
                  }, 
                  function(error){ 
                   showErrorNotification(that.J.defect_act_deact_error); 
                  } 
                ); 
              }); 
             } 

           }); 
          })(cellWidget); 
          } 
         }, 
        ]; 
+0

Пожалуйста, помогите ... – KSK

ответ

1

вы должны использовать «getCellWidgetConnects» для связывания событий с клеточными виджетами Также убедитесь, что ваша модель сетки сохраняется после редактирования.

+0

Спасибо, что он работает отлично .. – KSK