2010-01-06 7 views
2

J'utilise un jqGrid avec multiselect activé. Cela fonctionne mais j'ai un effet secondaire dont je voudrais me débarrasser. Chaque fois que quelqu'un clique sur une ligne, la case à cocher modifie également son état vérifié. J'aimerais laisser tomber ça.jqGrid avec multiselect activé, comment désactiver la case à cocher vérification lorsque la ligne est sélectionnée

J'ai essayé ceci:

onSelectRow: function(row) { return false; } 

et la mise en

beforeSelectRow: function(rowid, e) { return true; }, 

Si je mets à false j'obtenir le comportement souhaité, mais je aussi ne pas obtenir les plus ids sélectionnés par

jqGrid('getGridParam', 'selarrrow'); 

Quelqu'un a une idée pour résoudre ce problème?

+0

requête en double, voir ma réponse [ici] (https://stackoverflow.com/a/47758337/8743891) –

Répondre

0

jqGrid est conçu pour fonctionner de cette façon; avez-vous une bonne raison de ne pas vouloir afficher les cases à cocher?

+0

j'avais déjà peur. L'équipe d'utilisabilité est convaincue que ce n'est pas un comportement correct et veut le contraire. – XIII

7
$("#Grid_ID").jqGrid('hideCol', 'cb'); 

Ajouter au-dessus ligne de code sur la fonction gridComplete

+0

Cela fonctionne pour moi! – Losbear

+0

J'allais downvoter ceci pour ne pas travailler avec le nouveau jqgrid, mais il a 7 ans donc vous pouvez garder vos points. – catbadger

0

j'ai pu accomplir cela en vérifiant l'ID de colonne fournie au gestionnaire d'événements onSelect. S'il s'agit d'une colonne autre que la première, renvoyez false. J'ai dû le faire dans un couple de gestionnaires d'événements afin d'obtenir le comportement préféré.

2

J'ai eu un cas où j'ai eu un tas d'actions qui ont été déclenchées en sélectionnant des cellules et je ne voulais pas que la ligne soit sélectionnée.

Je vérifie le numéro de colonne dans la fonction onCellSelect et basculer la sélection des cases à cocher en arrière pour les colonnes autres que la première colonne de sélection

if (iCol > 1) { 
    $(grid).jqGrid('setSelection', rowid, false); 
} 
0
beforeSelectRow: function(rowid, e){ 
    if(e.srcElement.type == "checkbox"){ 
    return true; 
    } 
    return false; 
    }, 
1

J'ai essayé l'approche de awattar mais trouvé srcElement était non définie. J'ai utilisé ce lieu:

beforeSelectRow: function(rowid, e){ 
     var td = e.target; 
     var index = $.jgrid.getCellIndex(td); 
     if(index == 1){ 
     return true; 
     } 
     return false; 
    }, 
1

méthode add init

<ClientSideEvents GridInitialized="grdInit"> 

    function grdInit() 
    { 
    var myGrid = $("#myGrid"); 
    myGrid.jqGrid('hideCol', 'cb'); 
    } 
2
beforeSelectRow: function (rowid, e)   
{ 
    var $myGrid = $(this), 
    i = $.jgrid.getCellIndex($(e.target).closest('td')[0]), 
    cm = $myGrid.jqGrid('getGridParam', 'colModel'); 
    return (cm[i].name === 'cb'); 
}, 
0

Essayez ci-dessous un. Le code ci-dessous m'aide à résoudre ce problème. Avec l'aide de ce vous ne pouvez pas cliquer sur la grille.

beforeSelectRow: function(rowid, e) { 
     return false; 
    } 
Questions connexes