jqGridで行を選択された時に処理を行いたい場合は「onSelectRow」を利用します。
onSelectRowには関数をそのまま渡して処理を行います。
jqGridで行選択時の処理を行う方法
jqGridで選択された行のデータを取得するなどの処理を行うには「onSelectRow」を利用します。
具体的にはjqGirdで表を作成するタイミングで「onSelectRow」プロパティに実行したい処理を記述して渡します。
$("#jqGirdList").jqGrid({
data:datas //表示したいデータ
,datatype : "local" //データの種別(local,json,xml)
,caption : "表のタイトル" //表のキャプション
,colNames : header_name //列の表示名
,colModel : col_model //列ごとの設定
,rowNum : 5 //1ページに表示する行数
,rowList : [1, 5, 10, datas.length] //変更可能な1ページ当たりの行数
,height : $( window ).height() * 0.4 //高さ(px指定)
,width : $( window ).width() * 0.6 //幅(px指定)
,pager : 'pager_div' //footerのページャー要素のid
,shrinkToFit : true //画面サイズに依存せず固定の大きさを表示する設定
,viewrecords: true //footerの右下に表示する。
,onSelectRow : function( rowid, status, e ){
console.log( "rowid=[" + rowid + "]" );
console.log( "status=[" + status + "]" );
console.log( "e=[" + e.toString() + "]" );
var rowdata = $('#jqGirdList').getRowData( rowid ) ;
for( var row in rowdata ){
console.log( row + "=" + rowdata[ row ] );
}
}
});
のようになります。
実際にデータなどを設定して行をクリックすると
<html>
<head>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/ui-lightness/jquery-ui.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/free-jqgrid@4.15.4/css/ui.jqgrid.min.css">
<script src="https://cdn.jsdelivr.net/npm/free-jqgrid@4.15.4/js/jquery.jqgrid.min.js"></script>
<script>
$(function() {
//列の設定
var col_model= [
{ name:"no" , index:"no", width:70, align:"right" },
{ name:"name", index:"name", width:100, align:"left" },
{ name:"age", index:"age", width:100, align:"right" },
{ name:"gender", index:"gender", width:100, align:"left" },
{ name:"feature", index:"feature", width:200, align:"left" }
];
//列の表示名
var header_name = ["No.","名前","年齢","性別","特徴"];
//表示するデータ
var datas = [
{ no:1, name:"Aさん", age:20, gender:"男性", feature:"仮名ではない。" },
{ no:2, name:"Bさん", age:25, gender:"女性", feature:"女性です。" },
{ no:3, name:"Cさん", age:30, gender:"男性", feature:"男性です。" },
];
//テーブルの作成
$("#jqGirdList").jqGrid({
data:datas //表示したいデータ
,datatype : "local" //データの種別(local,json,xml)
,caption : "表のタイトル" //表のキャプション
,colNames : header_name //列の表示名
,colModel : col_model //列ごとの設定
,rowNum : 5 //1ページに表示する行数
,rowList : [1, 5, 10, datas.length] //変更可能な1ページ当たりの行数
,height : $( window ).height() * 0.4 //高さ(px指定)
,width : $( window ).width() * 0.6 //幅(px指定)
,pager : 'pager_div' //footerのページャー要素のid
,shrinkToFit : true //画面サイズに依存せず固定の大きさを表示する設定
,viewrecords: true //footerの右下に表示する。
,onSelectRow : function( rowid, status, e ){
console.log( "rowid=[" + rowid + "]" );
console.log( "status=[" + status + "]" );
console.log( "e=[" + e.toString() + "]" );
var rowdata = $('#jqGirdList').getRowData( rowid ) ;
for( var row in rowdata ){
console.log( row + "=" + rowdata[ row ] );
}
}
});
});
</script>
</head>
<body>
<table id="jqGirdList"></table>
<div id="pager_div"></div>
</body>
</html>
実行結果は
rowid=[jqg1] jqgrid_row_select.html:45 status=[true] jqgrid_row_select.html:46 e=[[object Object]] jqgrid_row_select.html:49 no=1 jqgrid_row_select.html:49 name=Aさん jqgrid_row_select.html:49 age=20 jqgrid_row_select.html:49 gender=男性 jqgrid_row_select.html:49 feature=仮名ではない jqgrid_row_select.html:49
のようになります。
まとめ
jqGridで選択された行のデータを取得するなどの処理を行うにはonSelectRow」を利用すれば簡単に行うことができます。
以上、jqGridで行選択時の処理を行う方法でした。
