2009-12-29 5 views
3

J'ai un jqGrid avec multiselect: true. Dans un cas de clic d'un bouton je tente de récupérer les ids comme:jqGrid multiselect donne uniquement les identifiants lorsque la case à cocher supérieure a été cochée?

var ids = $('#myGrid').jqGrid('getGridParam', 'selarrrow'); 

Cependant, je ne reçois que ids à remplir quelque chose si je cochez la case en haut dans l'en-tête. Si je ne sélectionne pas celui-ci dans l'en-tête mais que je sélectionne plusieurs cases à cocher dans les identifiants de la colonne, il n'y a pas d'identifiants sélectionnés. Comment surmonter cela?

sellarrrow est selon cet exemple écrit correctement: http://www.trirand.com/blog/jqgrid/jqgrid.html, sélectionnez Avancé, exemple Multiselect.

+3

Avez-vous remarqué que vous avez mal orthographié 'selarrow'? –

+0

Je le pensais aussi mais quand je l'ai essayé, plus rien ne fonctionnait. En outre, je trouve curieux que la case à cocher supérieure fonctionne encore, même mal orthographié. –

+0

@Craig Stuntz: En fait, c'est 'selarrrow'. Je suppose que cela vient de "SELected ARRay ROWs": http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options&s[]=selarrrow –

Répondre

2

avéré être une configuration défaillante où il a été fixé:

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

Réglage que true m'a rendu le pouvoir.

1

J'utilise ci-dessous code pour récupérer les lignes sélectionnées au hasard et son travail bien ..

var selArr = $("#my_grid").getGridParam("selarrrow"); 
1

si je mettais

$('#id ').getGridParam('selectarrow') 

au lieu de

$('# ').JQgrid('getGridParam','selectarrow') 

cela fonctionne

2

HI ajouter beforeSelectRow: cancelRowClickSelection,

propriété au réseau jq. défenition de fonction est donnée ci-dessous. Cela fonctionne parfaitement.

function cancelRowClickSelection(rowid, e) 
{ 
var target=e.originalTarget; 
var str=target.innerHTML; 
if(target.classList!=null && target.classList!="undefined" && target.classList[0]!=null && target.classList[0]!="undefined") 
{ 
    if(target.classList[0]=="cbox") 
    { 
    return true; 
    } 
} 
if(str.indexOf("input")!=-1 || str.indexOf("INPUT")!=-1) 
{ 
    return true; 
} 
return false; 
} 
1

J'ai essayé plusieurs des solutions présentées, sans chance. C'est ce que j'ai fini avec - il suffit de trouver la valeur de données ...

exemple complet autonome ..

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <link type="text/css" rel="stylesheet" media="screen" href="jqGrid4/css/redmond/jquery-ui-1.8.13.custom.css" /> 
    <link type="text/css" rel="stylesheet" media="screen" href="jqGrid4/css/ui.jqgrid.css" /> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
    <script type="text/javascript" src="jqGrid4/js/i18n/grid.locale-en.js"></script> 
    <script type="text/javascript" src="jqGrid4/js/jquery.jqGrid.min.js"></script> 
</head> 
<body> 

<form id="gridFIRST" action="A" method="post"> 
    <input id="gridFIRST_thinglist" name="gridFIRST[thinglist]" type="hidden" value=""> 
    <input id="gridFIRST_X" name="gridFIRST[do_X]" type="submit" value="Let Out 0"> 
</form> 
<form id="gridSECOND" action="B" method="post"> 
    <input id="gridSECOND_thinglist" name="gridSECOND[thinglist]" type="hidden" value=""> 
    <input id="gridSECOND_Y" name="gridSECOND[do_Y]" type="submit" value="Bring In 0"> 
</form> 
<table summary="grid" id="thisJqGrid"></table> 
<div id="thisJqGridPager"></div> 


<script> 
function selectedThingsClass() 
    { 
    this.list = new Array(); 
    this.dpush = function(thing) { if(this.list.indexOf(thing) == -1) /* if unique */ this.list.push(thing); } 
    this.dpop = function (thing) { var n = this.list.indexOf(thing); if(n >= 0) this.list.splice(n, 1); } 
    this.getCount = function() { return 0+this.list.length; } 
    this.thingSelected = function (isChecked,thing) { if(isChecked) this.dpush(thing); else this.dpop(thing); } 
    } 

function handleSelectedRow(thing) { 
    var jqgcell  = jQuery('#thisJqGrid').getCell(thing, 0); 
    var petName  = jQuery('#thisJqGrid').getCell(thing, 'COL2'); 
    var cbIsChecked = (jQuery(jqgcell).attr('checked') == 'checked') ? true : false; 
    switch(petName) 
     { 
     case 'Dog': 
      selectedThingsCat.thingSelected(cbIsChecked,thing); 
      jQuery('#gridSECOND_thinglist').val(selectedThingsCat.list.toString()); 
      jQuery('#gridSECOND_Y').val("Bring In "+selectedThingsCat.getCount()); 
      break; 
     case 'Cat': 
      selectedThingsDog.thingSelected(cbIsChecked,thing); 
      jQuery('#gridFIRST_thinglist').val(selectedThingsDog.list.toString()); 
      jQuery('#gridFIRST_X').val("Let Out "+selectedThingsDog.getCount()); 
      break; 
     } 
    } 

var selectedThingsDog = new selectedThingsClass(); 
var selectedThingsCat = new selectedThingsClass(); 

function index_handleSelectedRow(rowIndex) 
    { 
    // convert row-index to JSON-Data ID 
    var rowDataArr = jQuery("#thisJqGrid").getRowData(); 
    handleSelectedRow(rowDataArr[rowIndex].COL1); 
    } 

var mydata = [ 
    {id:"thing01",COL1:"thing01",COL2:"Dog"}, 
    {id:"thing02",COL1:"thing02",COL2:"Cat"}, 
    {id:"thing03",COL1:"thing03",COL2:"Cat"}, 
    {id:"thing04",COL1:"thing04",COL2:"Dog"}, 
    {id:"thing05",COL1:"thing05",COL2:"Cat"}, 
    {id:"thing06",COL1:"thing06",COL2:"Dog"}, 
    {id:"thing07",COL1:"thing07",COL2:"Cat"}, 
    {id:"thing08",COL1:"thing08",COL2:"Cat"}, 
    {id:"thing09",COL1:"thing09",COL2:"Dog"}, 
    {id:"thing10",COL1:"thing10",COL2:"Dog"} 
    ]; 

jQuery(document).ready(function($){ 
    jQuery("#thisJqGrid").jqGrid({ 
      onSelectAll: function(rowIdxArray, sts) 
       { jQuery(rowIdxArray).each(function(rowIndex){ index_handleSelectedRow(rowIndex); }); }, 
      onSelectRow: function(rowJsonId) 
       { handleSelectedRow(rowJsonId); }, 
      multiselect: true, 
      colNames:[ 'Thing','Pet' ], 
      colModel: [ { name:'COL1', width:10 }, { name:'COL2', width:10 }, ], 
      datatype: "local", data: mydata, 
      width: "200", height: "100%", 
      postData: { "oper":"grid" }, 
      toolbar: [true,"top"], 
      rowNum:10, 
      sortname: "COL1", 
      sortorder: "asc", 
     }); 
    }); 

</script> 
</body> 
</html> 
Questions connexes