在 GRID 中编辑列后,列值未更改

Posted

技术标签:

【中文标题】在 GRID 中编辑列后,列值未更改【英文标题】:Column values not changed after edit the coulmn in GRIDX 【发布时间】:2015-05-22 07:30:46 【问题描述】:

我在我的项目中使用 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);
                            
                        ,
                    ];  

【问题讨论】:

请人帮忙... 【参考方案1】:

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

【讨论】:

以上是关于在 GRID 中编辑列后,列值未更改的主要内容,如果未能解决你的问题,请参考以下文章

是否有一种方法可以根据其他列减去列值?

文本输入的更改值未返回

在 Kendo Ui Grid 弹出窗口中更改按钮文本

在 WPF 和 XAML 中,如何让行详细信息的列在跳过多个列后动态更改以在父行下对齐?

文本字段更改的值未在 OnSubmit 中更新 - React-Hook-Form 和 React Js

如何告诉 ExtJS Grid 编辑过的数据已经同步?