2012-11-14 19 views
0

我已經實現了網格A,它正在擴展Ext.grid.Panel並實現了一些其他網格,它們正在擴展網格A.對於所有正在擴展網格A的網格,我添加了一個額外的列他們通過自己的父母電網的構造函數(電網A)如何完全刪除網格和它的列

constructor: function() {  

    this.columns.push({ 
     xtype: 'gridcolumn', 
     //id: 'removeColumn', 
     header: '', 
     sortable: false, 
     dataIndex: 'action', 
     width: 25, 
     renderer: function (action, metaData, record, row, col, store, gridView) { 
      if (action == 'add') return icon = '<img style="height: 15px;width: 15px;" src="images/add.png"/>'; 
      else return icon = '<img style="height: 15px;width: 15px;" src="images/close.png"/>'; 
     } 

    }); 

    this.callParent(arguments); 
} 

所以上面的代碼中添加網格答:我添加了一個面板上的所有這些網格的所有子網格(結束一個額外的列發言權GridsPanel),它們被進一步添加到Tab中。 GridsPanel是可關閉的(也可以通過Tab鍵重新添加)。單擊關閉按鈕時,它會成功關閉,但每當我將GridsPanel重新添加到選項卡時,網格A都會在所有子網格的末端添加兩列。事實是,網格A不添加兩列,但在關閉GridsPanel之前添加的列仍然存在,並且不會被刪除。 類似地關閉GridsPanel並通過按鈕單擊再次創建它將向子網格添加另一列,從而將列的總數添加到3. 因此,構造函數的功能實際上是正常工作的,也就是說它在結尾添加了一個額外的列子網格,但完全破壞網格存在一些問題。

回答

0

我得到了解決方案,並認爲與其他人分享,因爲它可能會幫助其他人。問題實際上是在構造函數中的每個子網格的末尾添加額外的列。在網格中添加額外的列viewready事件解決了問題。

viewready: function(object){ 

     column = { 
      xtype: 'gridcolumn', 
      //id: 'removeColumn', 
      detachOnRemove : false, 
      header: '', 
      sortable: false, 
      dataIndex: 'action', 
      width: 25, 
      renderer: function (action, metaData, record, row, col, store, gridView) { 
       if (action == 'add') return icon = '<img style="height: 15px;width: 15px;" src="images/add.png"/>'; 
       else return icon = '<img style="height: 15px;width: 15px;" src="images/close.png"/>'; 
      } 

     }; 

     object.headerCt.insert(object.columns.length, column); 
     object.getView().refresh(); 
} 

因此,使用這種方法添加列會完全破壞網格及其列。