2012-07-19 4 views
7

Simple question, difficile de trouver une réponse:jqGrid: Comment utiliser multiselect sur des pages différentes

Si je tente de sélectionner une ligne par programme, j'utilise ceci:

$('#grid').jqGrid('setSelection', rowId); 

Le problème est que sélectionne uniquement les lignes sur la page visible en cours. Si rowId est sur une autre page, elle ne sera pas sélectionnée.

Plus d'infos: Mon objectif est de sélectionner plusieurs lignes (réparties sur plusieurs pages) lorsque la page est chargée pour la première fois.

Merci, Rafael

PS: Ce mec a le même problème. Aucune réponse pour le moment: jqgrid multiselect only selects rows on the current page, if paging is enabled. How to make it select rows across pages?

Répondre

8

À droite, jqGrid sélectionne uniquement les lignes de la page en cours. Pour sélectionner d'autres lignes, vous devez gérer une liste d'identifiants sélectionnés et les sélectionner manuellement.

Pour ce faire, vous devez ajouter du code à votre événement loadComplete pour rechercher la page en cours et sélectionnez l'une de ces lignes:

var ids = grid.jqGrid('getDataIDs'); 
for (var i = 0; i < ids.length; i++){ 
    if (selected[ids[i]] === true){ 
     grid.setSelection(ids[i], false); 
    } 
} 

Vous devez également ajouter du code à vos onSelectRow et onSelectAll événements pour régler la contenu de selected lorsque l'utilisateur lignes sélectionne/désélectionne:

onSelectRow: function(rowid, status){ 
    selected[rowid] = status; 
    setSelectedDeviceCount(); 
}, 

onSelectAll: function(rowids, status){ 
    for (var i = 0; i < rowids.length; i++){ 
     selected[rowids[i]] = status; 
    } 
} 

Est-ce que l'aide?

+0

Merci beaucoup! Malheureusement, le code ne peut pas être utilisé de cette façon (ma faute, pas le vôtre!), Mais l'idée générale m'a fait réparer ça! Merci! –

Questions connexes