1

我在我的项目中使用 Dojo Gridx。这些是我的列名称 id、field1、field2、活动状态

我有一个任务,当单击列活动状态时需要更改活动状态值、列图标和 field1、field2 值。

例如:如果单击时活动状态值为“Y”,那么我想更改 field1、field2 的值并更改活动状态图标。我可以在下面提到的代码的帮助下实现这个功能。

但这里的问题是,field1 是可编辑的,如果我单击活动状态列而不编辑 field1,则下面提到的代码工作正常。编辑后,如果单击下面提到的活动状态列,则代码不起作用。但是服务器端的值发生了变化,数据库端工作正常。我不知道有什么问题请有人让我理解。我附上了我的代码供您参考。

require(["dojo/request","dojo/i18n!RW/nls/appResources"], function(request,bundle){ request.get("/RW/rest/"+that.resourcePath,{handleAs : 'J '}).then(函数(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);
                            }
                        },
                    ];  
4

1 回答 1

1

您必须使用“getCellWidgetConnects”将事件绑定到单元小部件。还要确保在编辑后保存网格模型。

于 2015-05-26T08:16:04.103 回答