2013-07-23 26 views
0

我需要什麼樣的拉力排序由家長

我想由母公司字段進行排序我的網格/存儲,但由於父字段是取是一個對象,它不能獲取任何記錄,當我把一個基於Parent屬性的分揀機。即使我添加分揀機功能,它也不會被調用。我使用的是rallygrid,不知道是否有差別

sorters: [{ 
    property: 'Parent', 
    direction: 'DESC', 
    sorterFn: function(one, two) { 
     console.log('one',one); 
     console.log('two',two); // console never shows these 
     return -1; 
    } 
}] 

我已經試過

要解決顯示對象,我添加了一個渲染功能父列。我嘗試在列中添加一個doSort,並調用該函數,但對商店排序並不會調用我的sorterFn,它只使用屬性和方向(類似於以上運行失敗的console.log())

+0

所以它看起來像使用wsapidatastore這樣不能做一些反彈格 - wsapidatastore不具備所有的正常Ext.data.store的功能(因爲它是一個可分頁店),如分揀機定義作爲Ext.util.Sorter。我想要一個拉力賽網格的功能 - 我想默認內聯編輯,以及它添加的其他不錯的功能。我是否錯過了其他一些方法來完成這個任務? –

+0

我想問題是,如果你指定一個模型到一個拉力賽網格,它是使用wsapidatastore填充網格?我的過濾能力讓我覺得如此... –

回答

0

下面是一個正常工作的自定義應用程序示例。關鍵是將remoteSort的默認storeConfig設置爲false!

Ext.define('CustomApp', { 
    extend: 'Rally.app.App', 
    componentCls: 'app', 

    launch: function() { 
     App = this; 
     Rally.data.ModelFactory.getModel({ 
      type: 'PortfolioItem/Feature', 
      success: function(model) { 
       App.add({ 
        xtype: 'rallygrid', 
        id : 'grid', 
        model: model, 
        columnCfgs: [ 
         'FormattedID', 
         'Name', 
         {dataIndex: 'Parent', name: 'Parent', 
          doSort: function(state) { 
           var ds = this.up('grid').getStore(); 
           var field = this.getSortParam(); 
           console.log('field',field); 
           ds.sort({ 
            property: field, 
            direction: state, 
            sorterFn: function(v1, v2){ 

             v1 = v1.get(field); 
             v2 = v2.get(field); 
             console.log('v1',v1); 
             console.log('v2',v2); 
             if (!v1 && !v2) { 
              return 0; 
             } else if (!v2) { 
              return 1; 
             } else if (!v1) { 
              return -1; 
             } 
             return v1.Name.localeCompare(v2.Name); 
            } 
           }); 
          }, 
          renderer: function(value, meta, record) { 
           var ret = record.raw.Parent; 
           if (ret) { 
            return ret.Name; 
           } else { 
            return record.data.Name; 
           } 
          } 
         } 
        ], 
        storeConfig: { 
         remoteSort: false 
        } 
       }); 
      } 
     }); 
    } 
});