编程 |  数据库 |  安全 |  系统 |  服务器 |  嵌入式 |  设计 |  基础 |  组网 |  QQ | 

jqGrid中不同datatype,selrow单选selarrrow多选不同的纠结

作者:我的青春我做主  发布日期:2013-12-12 21:52:44
  • 收藏本文    我要投稿
  • 之所以写这个主题的博客,是因为太纠结了,就是很简单的问题,但是就是搞不明白,虽然项目中功能没问题,但是这个问题,想了好半天,也没有结果,最后不了了之。

    若有理解的,可以留下您的大名~

    废话少说,直奔主题:

    jqGrid是jquery的grid插件,前台主要应用这个js来实现grid表格,效果如下:

    \

    jqGrid其他的就不过多说了,在此说一下我的问题。

    jqGrid中参数:option:selrow,selarrrow定义

    selrow:This option is read only. Contain the id of the last selected row. If you sort or apply a pagging this options is set to null【这个参数是只读的,获取最后选中行的id,如果你排序或分页,这个参数设置为null,默认是null,并且不可更改】

    selarrrow:This options is read only. Determines the currently selected rows when multiselect is set to true. This is one dimensional array and the values in the array correspond to the selected id's in the grid.【参数是只读的,当multiselect设置为true时,使用这个参数来获取目前选中行,她是数组形式,数组中的值就是表格中被选中id集合】

    grid展示数据有两种形式:

    一种:客户端自己访问,然后把访问到的data赋值给grid。另一种:grid直接访问server。

    先说第一种:前几个模块都是使用第一种方式,也就是使用datatype为local形式,把访问到data以数组形式赋值给grid。其中不涉及到分页。

    第一种:

     

    $.ajax({
           url:"",
           success: function(msg){
           posData = eval(msg);
           $("#tblPosition").jqGrid('setGridParam', {
            datatype: 'local',
            data:posData
                    }).trigger("reloadGrid");      
    });

     

    这种形式下,使用单选,selrow,获取最后一次选中行的id,这样获取这条记录:

    var slt = $("#tblPosition").jqGrid('getGridParam','selrow'); 选中行的id

    var row= $("#tblPosition").jqGrid('getRowData', slt); row就是选中行,以json形式的记录

    alert(row.grid表格中的字段);

    \

    使用多选时,selarrow:获取的选中行的id's。这样的获取这条记录的某一个字段时,如下:

    var slt = $("#tblPosition").jqGrid('getGridParam','selarrrow');

    for(var i=0; i var row=$("#tblPosition").jqGrid('getRowData', slt[i]);

    alert(row.grid表格中的字段);
    }

    第二种:jqgrid直接访问server,其中用到分页【因为后几个模板数据最少是几十万条数据】

     

    			$("#templatemappingList").jqGrid({
    				url: path + "/rcp/rml/getAllTemplateMaping.do",
    				datatype:"json",
    				colNames:tagArray,
    				pager:"#pager",
    				rownumbers:true,
    				rowNum:15,
    				rowList:[10,15,20],
    				multiselect:true,
    				colModel:[
    				   //省略
    				   ],
    				  jsonReader : {  
    					       root:"rows",  
    					        page: "page",  
    					        total: "total",  
    					        records: "records",  
    					        repeatitems: false,
    				            id: "0"  
    					   }
    			});

    这种形式下,使用单选,selrow时使用如上:var slt = $("#tblPosition").jqGrid('getGridParam','selrow'); 此时获取的slt不是行id,而是colModel中第一个的值【无论是显示还是hidden】

    \

    使用多选selarrrow时使用依然如上:var slt = $("#tblPosition").jqGrid('getGridParam','selarrrow');此时获取的不是行id的数组,而是colModel中第一个值数组【无论是显示还是hidden】

    程序中恰巧第一个是主键,所以一直没有问题

    同时,官网demo中,有第二个例子,因colModel中第一个是数值型,和行不太容易区分,隐隐约约感觉到和我的一样,但是不敢太确定。官网上是使用php,也不是html文件形式,若单个文件,可以更改其js,进行测试。但是这个没有测试。

    目前我使用两种形式的grid,也算历程经验。但是我觉得,selrow、selarrrow应该是一致的,但是我项目中效果是如上。有相同经历的或有经验的,请留下您宝贵的指导(*^__^*)

     

延伸阅读:

Tag标签:jqGrid  中不  datatype  
  • 专题推荐