最近在做项目的时候,需要用到jqGrid中的一些属性和方法,在网上搜索了一下,然后顺便做一下总结

我想要实现的效果是:自动隐藏null列

在前端js中,需要做的事情的总体思路是:首先你需要获得一个model对象(它是一个对象数组,每一个对象就是一个列的集合,然后又许多列,合并为数组)

然后根据获得的model,在逐步的得到其中的数值,双层for循环

第一层:得到每一列的集合对象

第二层:得到当前列的每一个对象cell,然后判断其是否为null


下面就写一下,我在网上搜的一些相关的帖子和博文吧


①:

jqgrid获取Column属性,其实有其内置的方法的。通过
var columnArray = $(“#gridTable”).jqGrid(‘getGridParam’,'colModel’); 

获取到的是一个对象数组,也就是每一个gridColumn,可以通过
columnArray[i].name获取name属性的值,也可以通过columnArray[i].index获取index属性的值。

var columnNames = $(“#gridTable”).jqGrid(‘getGridParam’,'colNames’);

columnNames[i]便可得到其值。

②:


最近做的一个项目用到了jqGrid,但总是感觉对它一知半解,于是楼主花了一些时间查看了他的API。

jqGrid中一些方法的使用说明如下: 
1、获取单个选中行的行ID

var rowid = jQuery("#listTable").jqGrid("getGridParam", "selrow");

2、获取多个选中行的id

var ids=jQuery("#listTable").jqGrid('getGridParam','selarrrow');

3、获得所有行的ID数组

var ids = jQuery("#listTable").jqGrid('getDataIDs');

4、获取单个行数据

var rowData = jQuery("#listTable").jqGrid('getRowData',rowId);

其中,rowId是想要获取行数据的行ID。rowData 是包含整行数据的对象。例如,你想获得该行数据中的ID,可以直接用rowData.id来获得

5、设定行选中

//设定选中行,可设定多行选中:
  jQuery("#listTable").jqGrid('setSelection',id1);
  jQuery("#listTable").jqGrid('setSelection',id2);

然而,以上这些并不能够满足楼主的需求,楼主需要的是在表格加载完时,就能选中已被标记的行。于是楼主只能自己想办法。

后来,查看文档发现有gridComplete: 这样一个方法。

gridComplete:当表格所有数据都加载完成而且其他的处理也都完成时触发此事件,排序,翻页同样也会触发此事件

setSelection:参数:rowid,onselectrow。选择或反选id = rowid指定的行。若onselectrow设置为true (缺省) 则触发onSelectRow事件,否则不触发。

multiselect: true,
multiboxonly: true,
gridComplete: function() {
          var rowIds = jQuery("#listTable").jqGrid('getDataIDs');
          for(var k=0; k<rowIds.length; k++) {
             var curRowData = jQuery("#listTable").jqGrid('getRowData', rowIds[k]);
             var curChk = $("#"+rowIds[k]+"").find(":checkbox");
             curChk.attr('value', curRowData['is_locked']);   //缁檆heckbox璧嬪€?
             if(curRowData.is_locked == '1'){
                 jQuery("#listTable").(rowIds[k], false); 
              }

          }
      }

后来楼主又发现一个问题,当我们设置multiselect为true时,选择任何的单元格,都会选中该行。而楼主只想在点击指定单元格时才选中行,这该怎么办呢?

beforeSelectRow:参数:rowid, e 此事件发生在用户点击行,选中该行前。rowid 为行的ID,e为事件对象该事件将返回布尔值true(行被选中)或false(行未被选中)。当返回值为false时,将不触发任何事件。

beforeSelectRow:function(rowid, e){
          if(e.type == 'click'){
              i = $.jgrid.getCellIndex($(e.target).closest('td')[0]),  
              cm = jQuery("#listTable").jqGrid('getGridParam', 'colModel');  
              return (cm[i].name == 'cb'); //当点击的单元格的名字为cb时,才触发选择行事件
          }
          return false;
      }

如果我们全选时只想获得自己想要的行id该怎么做呢?

onSelectAll:参数:aRowids,status。此事件发生在点击标题的复选框时发生(multiselect为true)。aRowids为选定行ID的数组(哪些行的复选框与头复选框相同)。status为头复选框的选定的布尔值,true为选中,false为未选中。

onSelectAll:function(rowid, status) { 
          var ids = jQuery("#listTable").jqGrid('getDataIDs');
          for (var i=0; i<ids.length; i++) {
              var cl = ids[i];
              var curRowData = $ynf_list.jqGrid('getRowData', cl);
              if(curRowData.status == 1 && status == true){
jQuery("#listTable").setSelection(rowIds[k], false); 
              }
          }
  var idList=jQuery("#listTable").jqGrid('getGridParam','selarrrow');//获取所有选中行的ID
});


③:
一、主要API接口getGridParam、setGridParam:

  getGridParam方法:

  getGridParam("url"): 获取当前的AJAX的URL
  getGridParam("sortname"):排序的字段
  getGridParam("sortorder"):排序的顺序
  getGridParam("selrow"):得到选中行的ID
  getGridParam("page"):当前的页数
  getGridParam("rowNum"):当前有多少行
  getGridParam("datatype"):得到当前的datatype
  getGridParam("records"):得到总记录数
  getGridParam("selarrrow"):可以多选时,返回选中行的ID
 
  setGridParam方法:

  setGridParam({url:newvalue}):可以设置一个grid的ajax url,可配合trigger("reloadGrid")使用
  setGridParam({sortname:newvalue}):设置排序的字段
  setGridParam({sortorder:newvalue}):设置排序的顺序asc or desc
  setGridParam({page:newvalue}):设置翻到第几页
  setGridParam({rowNum:newvalue}):设置当前每页显示的行数
  setGridParam({datatype:newvalue}):设置新的datatype(xml,json)


     形式2:jQuery('#tableID').jqGrid('getGridParam','url'))
           jQuery("#tableID").jqGrid('setGridParam',{page:2}).trigger("reloadGrid")
二、jqGrid colModel表体结构配置

name       必要的属性,具有唯一标识性,如在弹出的editform窗体中,将作为input的name属性 
index       为排序用,最方便的是设为数据库字段 
width       150,宽度,数值
align       left,center,right 
detefmt     date:true 
editable    flase 
editoptions edittype为先决条件,此为值,[] 
editrules   编辑规范 
edittype    text,textarea,select,checkbox,password 
formatoptions 
formatter 
hidedlg     false (appear in the modal dialog) 
hidden      false 在加载时是否隐藏列 
jsonmap     声明json的格式 
key     false 
label       当没有设置colNames时,在列里用此代替,此项也为空时,就是name代替 
resizable   true,列宽可调节 
search      true,可搜索
sortable    true,可排序
sorttype    text,int,float,date,排序子段类型
xmlmap      声明xml的格式
//<table id="list4"></table> 
jQuery("#list4").jqGrid({
    datatype: "local",
    height: 250,
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:60, sorttype:"int"},
           {name:'invdate',index:'invdate', width:90, sorttype:"date"},
           {name:'name',index:'name', width:100},
           {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"},
           {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"},        
           {name:'total',index:'total', width:80,align:"right",sorttype:"float"},        
           {name:'note',index:'note', width:150, sortable:false}        
       ],
       multiselect: true,
       caption: "Manipulating Array Data"
});
var mydata = [
        {id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
        {id:"2",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
        {id:"3",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
        {id:"4",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
        {id:"5",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
        {id:"6",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"},
        {id:"7",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
        {id:"8",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"},
        {id:"9",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}
        ];
for(var i=0;i<=mydata.length;i++)
    jQuery("#list4").jqGrid('addRowData',i+1,mydata[i]);
//获取选中行数据
jQuery("#a1").click( function(){
    var id = jQuery("#list5").jqGrid('getGridParam','selrow');
    if (id)    {
        var ret = jQuery("#list5").jqGrid('getRowData',id);
        alert("id="+ret.id+" invdate="+ret.invdate+"...");
    } else { alert("请选择一行!");}
});

//可以多选的时候获取选中行   该函数为自定义函数
function update(){
         var  selector = $("#grid-table").jqGrid("getGridParam", "selarrrow");
                //checkbox单选时用‘selrow’,可以多选时用selarrrow   这得到是数组本该循环操作的,自己实现把。
         if(selector.length>=1){
         var traDeateId = selector+"_traDeate";
         var accountTypeId = selector+"_accountType";
         var proofNumberId = selector+"_proofNumber";
         var traDeate =$('#'+traDeateId).val();
         var accountType =$('#'+accountTypeId).val();
         var proofNumber =$('#'+proofNumberId).val();
         $('#grid-table').jqGrid('setRowData',selector,            {traDeate:traDeate,accountType:accountType,proofNumber:proofNumber},''); 
         $("#grid-table").jqGrid('setSelection' ,selector,true);   //反选择一行,去除勾选。
         }else{
            alert("请选择一条数据进行操作");
        }
    }

//删除
jQuery("#a2").click( function(){
    var su=jQuery("#list5").jqGrid('delRowData',12);
    if(su) alert("成功删除第12行"); else alert("删除失败");
});

//更新
jQuery("#a3").click( function(){
    var su=jQuery("#list5").jqGrid('setRowData',11,{amount:"333.00",tax:"33.00",total:"366.00",note:"<img src='images/user1.gif'/>"});
    if(su) alert("更新成功"); else alert("更新失败");
});

//新增
jQuery("#a4").click( function(){
    var datarow = {id:"99",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"};
    var su=jQuery("#list5").jqGrid('addRowData',99,datarow);
    if(su) alert("新增成功"); else alert("新增失败");
});
<table id="list9"></table>
<div id="pager9"></div>
<br />
<a href="javascript:void(0)" id="m1">Get Selected id's</a>
<a href="javascript:void(0)" id="m1s">Select(Unselect) row 13</a>



jQuery("#list9").jqGrid({
       url:'server.php?q=2&nd='+new Date().getTime(),
    datatype: "json",
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90},
           {name:'name',index:'name', width:100},
           {name:'amount',index:'amount', width:80, align:"right"},
           {name:'tax',index:'tax', width:80, align:"right"},        
           {name:'total',index:'total', width:80,align:"right"},        
           {name:'note',index:'note', width:150, sortable:false}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#pager9',
       sortname: 'id',
    recordpos: 'left',
    viewrecords: true,
    sortorder: "desc",
    multiselect: true,
    caption: "Multi Select Example"
});
jQuery("#list9").jqGrid('navGrid','#pager9',{add:false,del:false,edit:false,position:'right'});
jQuery("#m1").click( function() {
    var s;
    s = jQuery("#list9").jqGrid('getGridParam','selarrrow');
    alert(s);
});
jQuery("#m1s").click( function() {
    jQuery("#list9").jqGrid('setSelection',"13");
});

Invoice Header
<table id="list10"></table>
<div id="pager10"></div>
<br />
Invoice Detail
<table id="list10_d"></table>
<div id="pager10_d"></div>
<a href="javascript:void(0)" id="ms1">Get Selected id's</a>
 

jQuery("#list10").jqGrid({
       url:'server.php?q=2',
    datatype: "json",
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90},
           {name:'name',index:'name', width:100},
           {name:'amount',index:'amount', width:80, align:"right"},
           {name:'tax',index:'tax', width:80, align:"right"},        
           {name:'total',index:'total', width:80,align:"right"},        
           {name:'note',index:'note', width:150, sortable:false}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#pager10',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    multiselect: false,
    caption: "Invoice Header",
    onSelectRow: function(ids) {
        if(ids == null) {
            ids=0;
            if(jQuery("#list10_d").jqGrid('getGridParam','records') >0 )
            {
                jQuery("#list10_d").jqGrid('setGridParam',{url:"subgrid.php?q=1&id="+ids,page:1});
                jQuery("#list10_d").jqGrid('setCaption',"Invoice Detail: "+ids)
                .trigger('reloadGrid');
            }
        } else {
            jQuery("#list10_d").jqGrid('setGridParam',{url:"subgrid.php?q=1&id="+ids,page:1});
            jQuery("#list10_d").jqGrid('setCaption',"Invoice Detail: "+ids)
            .trigger('reloadGrid');            
        }
    }
});
jQuery("#list10").jqGrid('navGrid','#pager10',{add:false,edit:false,del:false});
jQuery("#list10_d").jqGrid({
    height: 100,
       url:'subgrid.php?q=1&id=0',
    datatype: "json",
       colNames:['No','Item', 'Qty', 'Unit','Line Total'],
       colModel:[
           {name:'num',index:'num', width:55},
           {name:'item',index:'item', width:180},
           {name:'qty',index:'qty', width:80, align:"right"},
           {name:'unit',index:'unit', width:80, align:"right"},        
           {name:'linetotal',index:'linetotal', width:80,align:"right", sortable:false, search:false}
       ],
       rowNum:5,
       rowList:[5,10,20],
       pager: '#pager10_d',
       sortname: 'item',
    viewrecords: true,
    sortorder: "asc",
    multiselect: true,
    caption:"Invoice Detail"
}).navGrid('#pager10_d',{add:false,edit:false,del:false});
jQuery("#ms1").click( function() {
    var s;
    s = jQuery("#list10_d").jqGrid('getGridParam','selarrrow');
    alert(s);
});

<<table id="list11"></table>
<div id="pager11"></div>
<script src="subgrid.js" type="text/javascript"> </script>


jQuery("#list11").jqGrid({
       url:'server.php?q=1',
    datatype: "xml",
    height: 200,
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90},
           {name:'name',index:'name', width:100},
           {name:'amount',index:'amount', width:80, align:"right"},
           {name:'tax',index:'tax', width:80, align:"right"},        
           {name:'total',index:'total', width:80,align:"right"},        
           {name:'note',index:'note', width:150, sortable:false}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#pager11',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    multiselect: false,
    subGrid : true,
    subGridUrl: 'subgrid.php?q=2',
    subGridModel: [{ name  : ['No','Item','Qty','Unit','Line Total'], 
                    width : [55,200,80,80,80] } 
    ],
    caption: "Subgrid Example"
    
});
jQuery("#list11").jqGrid('navGrid','#pager11',{add:false,edit:false,del:false});
<table id="listsg11"></table>
<div id="pagersg11"></div>
<script src="subgrid_grid.js" type="text/javascript"> </script>
Java Scrpt code 
jQuery("#listsg11").jqGrid({
       url:'server.php?q=1',
    datatype: "xml",
    height: 190,
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90},
           {name:'name',index:'name', width:100},
           {name:'amount',index:'amount', width:80, align:"right"},
           {name:'tax',index:'tax', width:80, align:"right"},        
           {name:'total',index:'total', width:80,align:"right"},        
           {name:'note',index:'note', width:150, sortable:false}        
       ],
       rowNum:8,
       rowList:[8,10,20,30],
       pager: '#pagersg11',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    multiselect: false,
    subGrid: true,
    caption: "Grid as Subgrid",
    subGridRowExpanded: function(subgrid_id, row_id) {
        // we pass two parameters
        // subgrid_id is a id of the div tag created whitin a table data
        // the id of this elemenet is a combination of the "sg_" + id of the row
        // the row_id is the id of the row
        // If we wan to pass additinal parameters to the url we can use
        // a method getRowData(row_id) - which returns associative array in type name-value
        // here we can easy construct the flowing
        var subgrid_table_id, pager_id;
        subgrid_table_id = subgrid_id+"_t";
        pager_id = "p_"+subgrid_table_id;
        $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>");
        jQuery("#"+subgrid_table_id).jqGrid({
            url:"subgrid.php?q=2&id="+row_id,
            datatype: "xml",
            colNames: ['No','Item','Qty','Unit','Line Total'],
            colModel: [
                {name:"num",index:"num",width:80,key:true},
                {name:"item",index:"item",width:130},
                {name:"qty",index:"qty",width:70,align:"right"},
                {name:"unit",index:"unit",width:70,align:"right"},
                {name:"total",index:"total",width:70,align:"right",sortable:false}
            ],
               rowNum:20,
               pager: pager_id,
               sortname: 'num',
            sortorder: "asc",
            height: '100%'
        });
        jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:false,del:false})
    },
    subGridRowColapsed: function(subgrid_id, row_id) {
        // this function is called before removing the data
        //var subgrid_table_id;
        //subgrid_table_id = subgrid_id+"_t";
        //jQuery("#"+subgrid_table_id).remove();
    }
});
jQuery("#listsg11").jqGrid('navGrid','#pagersg11',{add:false,edit:false,del:false});
<table id="list12"></table>
<div id="pager12"></div>
 

jQuery("#list12").jqGrid({
       url:'server.php?q=2',
    datatype: "json",
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90},
           {name:'name',index:'name', width:100},
           {name:'amount',index:'amount', width:80, align:"right"},
           {name:'tax',index:'tax', width:80, align:"right"},        
           {name:'total',index:'total', width:80,align:"right"},        
           {name:'note',index:'note', width:150, sortable:false}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#pager12',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    multiselect: false,
    width: 500,
    height: "100%",
    caption: "Auto height example"
});
jQuery("#list12").jqGrid('navGrid','#pager12',{add:false,edit:false,del:false});
<div class="h">Search By:</div>
<div>
    <input type="checkbox" id="autosearch" onclick="enableAutosubmit(this.checked)"> Enable Autosearch <br/>
    Code<br />
    <input type="text" id="search_cd" onkeydown="doSearch(arguments[0]||event)" />
</div>
<div>
    Name<br>
    <input type="text" id="item" onkeydown="doSearch(arguments[0]||event)" />
    <button onclick="gridReload()" id="submitButton" style="margin-left:30px;">Search</button>
</div>

<br />
<table id="bigset"></table>
<div id="pagerb"></div>
<script src="bigset.js" type="text/javascript"> </script>
Java Scrpt code 
jQuery("#bigset").jqGrid({        
       url:'bigset.php',
    datatype: "json",
    height: 255,
       colNames:['Index','Name', 'Code'],
       colModel:[
           {name:'item_id',index:'item_id', width:65},
           {name:'item',index:'item', width:150},
           {name:'item_cd',index:'item_cd', width:100}
       ],
       rowNum:12,
//       rowList:[10,20,30],
       mtype: "POST",
       pager: jQuery('#pagerb'),
       pgbuttons: false,
       pgtext: false,
       pginput:false,
       sortname: 'item_id',
    viewrecords: true,
    sortorder: "asc"
});
var timeoutHnd;
var flAuto = false;

function doSearch(ev){
    if(!flAuto)
        return;
//    var elem = ev.target||ev.srcElement;
    if(timeoutHnd)
        clearTimeout(timeoutHnd)
    timeoutHnd = setTimeout(gridReload,500)
}

function gridReload(){
    var nm_mask = jQuery("#item_nm").val();
    var cd_mask = jQuery("#search_cd").val();
    jQuery("#bigset").jqGrid('setGridParam',{url:"bigset.php?nm_mask="+nm_mask+"&cd_mask="+cd_mask,page:1}).trigger("reloadGrid");
}
function enableAutosubmit(state){
    flAuto = state;
    jQuery("#submitButton").attr("disabled",state);
}

<table id="rowed1"></table>
<div id="prowed1"></div>
<br />
<input type="BUTTON" id="ed1" value="Edit row 13" />
<input type="BUTTON" id="sved1" disabled='true' value="Save row 13" />
<input type="BUTTON" id="cned1" disabled='true' value="Cancel Save" />

<script src="rowedex1.js" type="text/javascript"> </script>



jQuery("#rowed1").jqGrid({
       url:'server.php?q=2',
    datatype: "json",
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90, editable:true},
           {name:'name',index:'name', width:100,editable:true},
           {name:'amount',index:'amount', width:80, align:"right",editable:true},
           {name:'tax',index:'tax', width:80, align:"right",editable:true},        
           {name:'total',index:'total', width:80,align:"right",editable:true},        
           {name:'note',index:'note', width:150, sortable:false,editable:true}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#prowed1',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    editurl: "server.php",
    caption: "Basic Example"
});
jQuery("#rowed1").jqGrid('navGrid',"#prowed1",{edit:false,add:false,del:false});

jQuery("#ed1").click( function() {
    jQuery("#rowed1").jqGrid('editRow',"13");
    this.disabled = 'true';
    jQuery("#sved1,#cned1").attr("disabled",false);
});
jQuery("#sved1").click( function() {
    jQuery("#rowed1").jqGrid('saveRow',"13");
    jQuery("#sved1,#cned1").attr("disabled",true);
    jQuery("#ed1").attr("disabled",false);
});
jQuery("#cned1").click( function() {
    jQuery("#rowed1").jqGrid('restoreRow',"13");
    jQuery("#sved1,#cned1").attr("disabled",true);
    jQuery("#ed1").attr("disabled",false);
});
<table id="rowed2"></table>
<div id="prowed2"></div>
<br />

<script src="rowedex2.js" type="text/javascript"> </script>

 

jQuery("#rowed2").jqGrid({
       url:'server.php?q=3',
    datatype: "json",
       colNames:['Actions','Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
        {name:'act',index:'act', width:75,sortable:false},
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90, editable:true},
           {name:'name',index:'name', width:100,editable:true},
           {name:'amount',index:'amount', width:80, align:"right",editable:true},
           {name:'tax',index:'tax', width:80, align:"right",editable:true},        
           {name:'total',index:'total', width:80,align:"right",editable:true},        
           {name:'note',index:'note', width:150, sortable:false,editable:true}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#prowed2',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    gridComplete: function(){
        var ids = jQuery("#rowed2").jqGrid('getDataIDs');
        for(var i=0;i < ids.length;i++){
            var cl = ids[i];
            be = "<input style='height:22px;width:20px;' type='button' value='E' onclick=\"jQuery('#rowed2').editRow('"+cl+"');\"  />"; 
            se = "<input style='height:22px;width:20px;' type='button' value='S' onclick=\"jQuery('#rowed2').saveRow('"+cl+"');\"  />"; 
            ce = "<input style='height:22px;width:20px;' type='button' value='C' onclick=\"jQuery('#rowed2').restoreRow('"+cl+"');\" />"; 
            jQuery("#rowed2").jqGrid('setRowData',ids[i],{act:be+se+ce});
        }    
    },
    editurl: "server.php",
    caption:"Custom edit "
});
jQuery("#rowed2").jqGrid('navGrid',"#prowed2",{edit:false,add:false,del:false});

<table id="rowed3"></table>
<div id="prowed3"></div>
<br />

<script src="rowedex3.js" type="text/javascript"> </script>



var lastsel;
jQuery("#rowed3").jqGrid({
       url:'server.php?q=2',
    datatype: "json",
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90, editable:true},
           {name:'name',index:'name', width:100,editable:true},
           {name:'amount',index:'amount', width:80, align:"right",editable:true},
           {name:'tax',index:'tax', width:80, align:"right",editable:true},        
           {name:'total',index:'total', width:80,align:"right",editable:true},        
           {name:'note',index:'note', width:150, sortable:false,editable:true}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#prowed3',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    onSelectRow: function(id){
        if(id && id!==lastsel){
            jQuery('#rowed3').jqGrid('restoreRow',lastsel);
            jQuery('#rowed3').jqGrid('editRow',id,true);
            lastsel=id;
        }
    },
    editurl: "server.php",
    caption: "Using events example"
});
jQuery("#rowed3").jqGrid('navGrid',"#prowed3",{edit:false,add:false,del:false});
<table id="rowed4"></table>
<div id="prowed4"></div>
<br />
<input type="BUTTON" id="ed4" value="Edit row 13" />
<input type="BUTTON" id="sved4" disabled='true' value="Save row 13" />

<script src="rowedex4.js" type="text/javascript"> </script>



jQuery("#rowed4").jqGrid({
       url:'server.php?q=2',
    datatype: "json",
       colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
       colModel:[
           {name:'id',index:'id', width:55},
           {name:'invdate',index:'invdate', width:90, editable:true},
           {name:'name',index:'name', width:100,editable:true},
           {name:'amount',index:'amount', width:80, align:"right",editable:true},
           {name:'tax',index:'tax', width:80, align:"right",editable:true},        
           {name:'total',index:'total', width:80,align:"right",editable:true},        
           {name:'note',index:'note', width:150, sortable:false,editable:true}        
       ],
       rowNum:10,
       rowList:[10,20,30],
       pager: '#prowed4',
       sortname: 'id',
    viewrecords: true,
    sortorder: "desc",
    editurl: "server.php",
    caption: "Full control"
});
jQuery("#ed4").click( function() {
    jQuery("#rowed4").jqGrid('editRow',"13");
    this.disabled = 'true';
    jQuery("#sved4").attr("disabled",false);
});
jQuery("#sved4").click( function() {
    jQuery("#rowed4").jqGrid('saveRow',"13", checksave);
    jQuery("#sved4").attr("disabled",true);
    jQuery("#ed4").attr("disabled",false);
});
function checksave(result) {
    if (result.responseText=="") {alert("Update is missing!"); return false;}
    return true;
}
<table id="rowed5"></table>

var lastsel2
jQuery("#rowed5").jqGrid({
    datatype: "local",
    height: 250,
       colNames:['ID Number','Name', 'Stock', 'Ship via','Notes'],
       colModel:[
           {name:'id',index:'id', width:90, sorttype:"int", editable: true},
           {name:'name',index:'name', width:150,editable: true,editoptions:{size:"20",maxlength:"30"}},
           {name:'stock',index:'stock', width:60, editable: true,edittype:"checkbox",editoptions: {value:"Yes:No"}},
           {name:'ship',index:'ship', width:90, editable: true,edittype:"select",editoptions:{value:"FE:FedEx;IN:InTime;TN:TNT;AR:ARAMEX"}},        
           {name:'note',index:'note', width:200, sortable:false,editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"10"}}        
       ],
    onSelectRow: function(id){
        if(id && id!==lastsel2){
            jQuery('#rowed5').jqGrid('restoreRow',lastsel2);
            jQuery('#rowed5').jqGrid('editRow',id,true);
            lastsel2=id;
        }
    },
    editurl: "server.php",
    caption: "Input Types"

});
var mydata2 = [
        {id:"12345",name:"Desktop Computer",note:"note",stock:"Yes",ship:"FedEx"},
        {id:"23456",name:"Laptop",note:"Long text ",stock:"Yes",ship:"InTime"},
        {id:"34567",name:"LCD Monitor",note:"note3",stock:"Yes",ship:"TNT"},
        {id:"45678",name:"Speakers",note:"note",stock:"No",ship:"ARAMEX"},
        {id:"56789",name:"Laser Printer",note:"note2",stock:"Yes",ship:"FedEx"},
        {id:"67890",name:"Play Station",note:"note3",stock:"No", ship:"FedEx"},
        {id:"76543",name:"Mobile Telephone",note:"note",stock:"Yes",ship:"ARAMEX"},
        {id:"87654",name:"Server",note:"note2",stock:"Yes",ship:"TNT"},
        {id:"98765",name:"Matrix Printer",note:"note3",stock:"No", ship:"FedEx"}
        ];
for(var i=0;i < mydata2.length;i++)
 jQuery("#rowed5").jqGrid('addRowData',mydata2[i].id,mydata2[i]);
④:

⑤: