Sencha Extjs - 如何从Controller

时间:2015-07-01 03:54:51

标签: javascript extjs extjs4

我的网格中有一个复选框列,根据复选框选择显示是/否。

要求: 如果复选框值==是,请将行颜色更改为绿色 否则保持原样(默认)。

到目前为止我采取的步骤: 在Ext.grid.View上设置getRowClass函数,如下所示:

 viewConfig: {
 getRowClass: function(record, rowIndex, rowParams, store) {
 if (record.get('isApproved') == true)
   {
     return 'highlight-rowgreen';
   }                           
 },

这完全没问题。 但是我想在store.sync回调中实现这一点,目前还没有发生。没有错误,没有。只是不起作用。

var store = Ext.getStore('MyApp.MyStore');
        store.proxy.url = MYAPP.globals.url + "myapplication/" + branchNo + "/event/" + branchEventId;
        store.sync({
            scope: this,
            callback:function (records, operation, success) {
                if(records.proxy.reader.rawData.success){
                // Success. Set the rows color to green if not already done.                    
                   alert('Update Completed');
                   eventsGrid.getView().getRowClass = function(record, rowIndex, rowParams, store){
                       console.log('I am here');
                       if (record.get('isApproved') == true)
                       {
                        return 'highlight-rowgreen';
                       }
                      };
                  }
                  else{
                     alert('Update failed');                   
                  }
                }
        });

我看不到的是我的控制台日志“我在这里”。我可以看到警报信息。

我尝试了其他解决方案,例如this,但没有发生。

感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

您不需要在商店同步回调中​​再次设置rowclass。它应该按原样工作。可能是您的网格视图需要刷新。试试这个..

 store.sync({
        scope: this,
        callback:function (records, operation, success) {
            if(records.proxy.reader.rawData.success){
            // Success. Set the rows color to green if not already done.                    
               alert('Update Completed');
               eventsGrid.getView().refresh(); //refresh grid view
              }
              else{
                 alert('Update failed');                   
              }
            }
    });