jqGrid经常使用增删改查Demo及常见问题


1,jqGrid 第一次加载方法,和查询按钮能够执行的方法
html

方法1
jQuery("#tableId").jqGrid({
 url: "/jqGrid/select.html",
        //发送数据
        postData: {"stock": $("#stock").val(), "name": $("#lastSales").val()},
        //发送方式
        mtype: "get",
        datatype: "json",
        //表格高度
        height: 400,
        //列名
        colNames: [' ', 'ID', 'Last Sales', 'Name', 'Stock', 'Ship via', 'Notes','Amt'],
        ...
})
做为最经常使用的jqGrid方法,它起到的是一个渲染页面和初始化一些方法的做用,后续的效果都是在该方法渲染好table等html后,才起做用。
并且,此方法,只在第一次加载页面时触发。
可是咱们作页面展现,通常都要有查询按钮,这个方法显然不适用,若是将该方法包装在$("#buttonId").click里,
是不会触发的。具体源码不清楚。(我第一次作查询按钮的时候,就是这么作的,debug发现,代码是一步一步往下走,就是调不到后台)

那么查询按钮应该用什么方法呢,仍是这个方法,只是带上了参数。
这个方法就是jqGrid对应的按钮能够触发的查询方法(并且必须是方法1渲染好页面后才能使用)
 $(grid_selector).jqGrid('setGridParam', {
        url: "/jqGrid/select.html",
        //发送数据
        postData: {"stock": $("#stock").val(), "name": $("#lastSales").val(), "note": $("#notes").val()},
        page: 1,
        //该方法是加载完
        loadComplete: function (xhr) {
            alert("查询完成"+xhr.result);
        }
    }).trigger("reloadGrid");//从新载入


2,按钮能够触发的增删改方法,json

若是你不想用jqGrid左下角的导航栏增删改,那么就能够用这几个方法函数

$("#buttonForEdit").click(function(){
    //gr是获取 编辑行的id
    var gr = jQuery("#grid-table").jqGrid('getGridParam', 'selrow');
    if (gr != null) jQuery("#grid-table").jqGrid('editGridRow',
                                                  gr,
                                                { height: 300, reloadAfterSubmit: false

    

    });
    else alert("Please Select Row");
});

$("#buttonForInsert").click(function(){
    jQuery("#grid-table").jqGrid('editGridRow', "new", { height: 300, reloadAfterSubmit: false });
});

$("#buttonForDelete").click(function(){
        var gr = jQuery("#grid-table").jqGrid('getGridParam', 'selrow');
        if (gr != null){
            var result=jQuery("#grid-table").jqGrid('delGridRow', gr, { reloadAfterSubmit: false });
        alert(result);}
        else alert("Please Select Row to delete!");

});

对于增删改,不少人会问,url在哪填写,post

其实jqGrid对于这三个的url,默认为一个,就是渲染页面的方法的一个参数,editUrl。url

那怎么区分呢。对此,jqGrid提交后台的url中,他会默认增长一个叫oper的属性spa

若是是edit,url就会是http://www.xx.com/edit.html?name=xxx&age=xxx&oper=edit debug

若是是update,url就会是http://www.xx.com/edit.html?name=xxx&age=xxx&oper=addcode

若是是delete,url就会是http://www.xx.com/edit.html?name=xxx&age=xxx&oper=del htm

因此后台能够根据oper去判断是什么操做。事件


不少人会问,导航栏自带的小按钮的add和edit,若是成功了,怎么提示。

这个我也不知道,

可是我找到一个事件能够起到这个效果。

afterComplete:function执行完add和edit后触发的回调函数,能够接收后台返回的数据

  afterComplete:function(xhr){
               alert(xhr.responseText);
                },
                //成功后关闭此窗口
                closeAfterAdd: true

xhr={readyState=4,responseText="后台返回的信息"  status=200 ...}

因此后台须要返回 sunccess 或者error之类的信息。

3,经常使用的获取数据的方法

  一、获取行id 

  var rowid = $("#grid-table").jqGrid("getGridParam", "selrow");

  2,获取checkbox的多个行id

  var array=$('#gridTable').jqGrid('getGridParam','selarrrow');

  array=1,2,3...

  三、获取rowId行的数据

  var rowData = $('#gridTable').jqGrid('getRowData',rowId);

  四、获取单元格数据

var celldata = $("jqgridtableid").jqGrid('getCell',id,colnum);
相关文章
相关标签/搜索