2012-02-13 57 views
0

我希望我的Ext.grid.CheckboxSelectionModel能夠在選中的SelectionModel中加載所有複選框。Ext.grid.CheckboxSelectionModel檢查加載的所有行

我寫這個方法:

function SelectAllRows() 
{  
    var sModel = reportsGrid.getSelectionModel(); 
    sModel.selectAll(true);  
} 

並嘗試從很多地方叫它:

var xmlStore = new Ext.data.Store({ 
    url: "...", 
    reader: new Ext.data.XmlReader({ 
     record: '...', 
     totalRecords: "results" 
    }, 
    record 
) 
}); 

xmlStore.on('load', CheckResults); 
xmlStore.on('load', SelectAllRows); 
xmlStore.load(); 

但只在第一次進入到它工作得很好,當我從後面的頁面下一頁它不起作用。

奇怪的是,當我在底欄添加一個標籤時,其中包含檢查行數據的總和,標籤顯示所有行的總和! 所以,這個方法調用的很好,但複選框不顯示爲選中狀態。

你遇到過這個問題嗎?

+0

這可能是因爲你擁有所有的數據和分頁是在本地完成的。所以因爲那個負載只被調用一次。我假設你使用Ext.PagingToolbar在頁面之間切換?也許你會想要在分頁工具欄的'change'事件上鉤住'SelectAllRows'? – CincauHangus 2012-02-14 11:52:17

+0

我沒有在這個網格中使用Ext.PagingToolbar, 看起來SelectAllRows方法調用的很好,因爲BottomToolBar包含所有行的數量(如選中) 但它只是不顯示它們被檢查視覺問題)。 – 2012-02-15 10:48:50

回答

4

我看到了它的發生是因爲渲染啓動兩次, 添加該值的-'deferRowRender:false'-到Ext.grid.GridPanel性質, 使複選框被上個頁面的每個入口/負載標記。

var reportsGrid = new Ext.grid.GridPanel({ 
    cm: new Ext.grid.ColumnModel([ 
     sm, 
     { id: '...', dataIndex: '...', hidden: true }, 
     { header: '...', width: 200, sortable: true, dataIndex: '...' } 
    ]), 
    sm: sm,     
    deferRowRender: false 
});