2012-02-13 2 views
0

Je veux que mon Ext.grid.CheckboxSelectionModel soit chargé avec toutes les cases dans le SelectionModel vérifié.Ext.grid.CheckboxSelectionModel vérifié toutes les lignes en charge

J'écris cette méthode:

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

et essayer de l'appeler de nombreux endroits:

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(); 

Mais seulement sur la première entrée de la page, il fonctionne bien, quand je reviens de la page suivante cela ne fonctionne pas.

Il est étrange que lorsque j'ajoute à la barre du bas une étiquette qui contient la somme d'une donnée des lignes vérifiées, et l'étiquette montre la somme de toutes les lignes! Donc, la méthode est bien appelée, mais les cases à cocher ne s'affichent pas comme cochées.

Avez-vous rencontré ce problème?

+0

Cela pourrait être parce que vous avez toutes les données et la pagination est faite localement. Donc, à cause de cette charge n'est appelée qu'une seule fois. Je suppose que vous utilisez Ext.PagingToolbar pour basculer entre les pages? Peut-être voudriez-vous accrocher le 'SelectAllRows' sur l'événement' change' de la barre d'outils de pagination? – CincauHangus

+0

Je n'ai pas utilisé Ext.PagingToolbar dans cette grille, Il semble que la méthode SelectAllRows ait été bien appelée, car BottomToolBar contient le nombre de toutes les lignes (comme coché) Mais cela ne montre pas qu'ils sont cochés (problème visuel). –

Répondre

4

je l'ai vu est arrivé à cause du rendu deux fois activé, cette valeur ajoutée -'deferRowRender: false'- aux propriétés Ext.grid.GridPanel, faire les cases marquées à chaque entrée/chargement de la page e.

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 
}); 
Questions connexes