2009-10-02 87 views
3

我正在使用GridPanel w/CheckboxSelectionModel進行項目選擇。 在編輯模式下,已經選擇了一些選項,我試圖在加載表單時預先選擇行。ExtJs checkboxselectionmodel

... 
store.load(); 
//curSelections is an array containing the some ForeingKey IDs of the selected records. 
... 

for (var i = 0; i < curSelections.length; i++) { 
    console.log('found personel ' + curSelections[i] + ' at ', 
       store.findExact('Id', curSelections[i])); 
    selectedRecords.push(store.findExact('Id', curSelections[i])); 
} 
//everything is fine according to console log. 
checkGrid.getSelectionModel().selectRecords(selectedRecords, true); 
formWin.show(); 

這不起作用。

我嘗試在一些其他頁面/表單事件上調用「selectRecords」,但沒有一個甚至觸發。

grid.addListener('show', 
grid.on('show', 
formWin.on('activate', 
formWin.on('show',.... 

一些電網碼

var sm = new Ext.grid.CheckboxSelectionModel({ 
     singleSelect: false, 
     sortable: false, 
     checkOnly: true 
    }); 
    checkGrid = new Ext.grid.GridPanel({ 
     xtype: 'grid', 
     store: obPersonelStore, 
     loadMask: true, 
     layout: 'fit', 
     height: 120, 
     id: 'grdIsBirimiPersonelListesi', 

     columns: [ 
      sm, 
      { 

我失去了一些東西簡單,但不知道它是什麼。 任何形式的幫助,非常感謝。

回答

3

Store.findExact返回數字索引。 selectionModel設置。 selectRecords需要記錄對象的數組。您是否嘗試過selectRows?要麼,要麼使用商店。 getAt通過索引檢索記錄以傳遞給selectRecords()。

+0

好吧,出於某種原因,我在考慮selectRecords期待行索引。現在有趣的是,它起作用,它們被選中,但當加載窗格(旋轉圖像)消失時,選擇被清除。 – hazimdikenli 2009-10-02 21:08:35

+0

您可以嘗試將選擇邏輯移動到store.load事件的處理程序中,以確保首先完成存儲加載,例如store.on('load',function(){//選擇邏輯}); – 2009-10-02 22:55:00

+0

非常感謝。它解決了這個問題。 :)你一直很有幫助,再次感謝。 – hazimdikenli 2009-10-04 20:41:31

0

我不是100%確定要達到的目標。你說:

我覺得整個列表

你的意思是你要選擇的每一行的所選行?在這種情況下,您可以使用CheckboxSelectionModel的selectAll()方法。

如果您只想選擇一些行,那麼我需要查看您使用的代碼來獲取這些行,但可能是您想要使用selectRecords()而不是selectRows()

+0

它是一個錯字,我加入了更多的代碼在原崗位。 我不添加整個代碼,因爲它不會有多大意義。 – hazimdikenli 2009-10-02 10:50:43

1

嘗試:

var store = new Ext.data.Store({ 
    ... 
}); 
var grid = new Ext.grid.GridPanel({ 
    store: store, 
    ... 
}); 
store.on('load', function() { 
    grid.getSelectionModel().selectFirstRow(); 
}); 
store.load();