2011-08-25 74 views
1

我的網格加載後,我將點擊處理程序綁定到包含複選框的列。jqgrid:獲取點擊複選框的行的ID

$("#mygrid td input").each(function() { 
$(this).click(function() { 
}); 
}); 

是否有此單擊處理一個漂亮的方式來獲得什麼對應於該行的複選框中記錄的PK/ID,所以我可以用它調用服務器?

回答

10

可以使用eventObject參數jQuery.click事件:

$("#mygrid td input").each(function() { 
    $(this).click(function (e) { 
     // e.target point to <input> DOM element 
     var tr = $(e.target).closest('tr'); 
     alert ("Current rowid=" + tr[0].id); 
    }); 
}); 

你應該只找到相對的jQuery.closest的點擊<input>元素所屬的<tr>(錶行)元素。 <tr>元素的id是您在填充網格時使用的rowid。

+0

只要你是一個生命的救星! –

+0

@Amete:不客氣!答案很古老。今天我會建議最好使用'beforeSelectRow'來檢測網格內部的任何點擊。 'e.target'是被點擊的元素。在單擊複選框的情況下,可以檢測單擊的行和列以及使用'.is(「:checked」)'。來自[答案](http://stackoverflow.com/a/24239416/315935)的示例[演示](http://www.ok-soft-gmbh.com/jqGrid/EditableCheckbox1.htm)演示了我意思。 – Oleg

1
$("#treegrid").jqGrid({ 
     url: '${createLink(controller:"poa", action:"obtEstrucAreasDep")}', 
     datatype: 'json', 
     postData: { 
      gestion: function() { return ${gestion}; } 
     }, 
     mtype: 'GET', 
     colNames: ["ID", "Nombre de Area", "Sigla", "Nivel", "Gener.HR", "Recep.HR", "Activo"], 
     colModel: [ 
      {name:'id', index:'id', width:1, hidden:true, key:true}, 
      {name:'area', index:'area', width:95, hidden:false, sortable:true}, 
      {name:'sigla', index:'sigla', width:25, hidden:false, sortable:false, align:'center'}, 
      {name:'nivel', index:'nivel', width:1, hidden:true, align:'center'}, 
      {name:'genhr', index:'genhr', width:25, align:'center', editable: true, edittype:'checkbox', editoptions:{value:"True:False"}, formatter:"checkbox", formatoptions:{disabled:false}}, 
      {name:'recep', index:'recep', width:25, align:'center', editable: true, edittype:'checkbox', editoptions:{value:"True:False"}, formatter:"checkbox", formatoptions:{disabled:false}}, 
      {name:'activ', index:'activ', width:25, align:'center', editable: true, edittype:'checkbox', editoptions:{value:"True:False"}, formatter:"checkbox", formatoptions:{disabled:false}} 
     ], 
     treeGridModel: 'adjacency', 
     height: 'auto', 
     width: '500', //360 
     treeGrid: true, 
     ExpandColumn: 'area', 
     ExpandColClick: true, 
     caption: '${titulo}'+' - GESTION '+'${gestion}', 
     onSelectRow: function(id){operRowJQGrid(id);} 
    }); 

這是由JuanFer

jQuery(document).delegate('#treegrid .jqgrow td input', 'click', function(e){ 

     var tr = $(e.target).closest('tr'); 
     var rowid = tr[0].id; 

     var $myGrid = jQuery('#treegrid'); 
     var i = $.jgrid.getCellIndex($(e.target).closest('td')[0]); 
     var cm = $myGrid.jqGrid('getGridParam', 'colModel'); 
     var colName = cm[i].name; 

     var y = $(this).val(); 
     var x = false 

     if(y=='false'){ 
      $(this).val('true'); 
     }else{ 
      $(this).val('false'); 
     } 
     x = $(this).val(); 
     alert("check = "+x+", id = "+rowid+", col name = "+colName); 
    });