现在的位置: 首页 > 综合 > 正文

JqGrid设置colModel自定义数据

2018年05月14日 ⁄ 综合 ⁄ 共 2210字 ⁄ 字号 评论关闭

一、

问题描述:

        在jqGrid给我们提供的官方文档上有设置某一行(row)的数据,但却没有提供设置某一列(col)的数据。

解决方法:

         循环每一行,分别设置对应的列的数据。主要用到这两个方法:

               1、var ids = $("#yourJqGridName").jqGrid('getDataIDs'); 返回的值为一个数组,里面是bajqGrid的的id.

               2、$("#yourJqGridName").jqGrid('setRowData',cl,{对应的列名:'你要设置的值',对应的列名:‘你要设置的值’}); cl 为行的id。

我用来解决的问题:

         1、一个表中要显示的数据,从后台封装到一个bean里边,比较麻烦,况且就使用一次,没必要,只能分开获取,再从新赋值。

         2、这种方法还可以自定义某一列要显示的内容,比如显示一个按钮。

实例1:不是一个完整的例子但是思路全在里边。

<!DOCTYPE html >
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>


<html xmlns="http://www.w3.org/1999/xhtml">
<head>


 
<script type="text/javascript">
$(function(){

$("#ListTable").jqGrid({
caption:'LOA Request Shortcut',
url:'后台请求的url',
datatype:'json',
mtype:'post',
colNames:['Id','First Name','Last Name'],//id 为从数据库中取得数据, 
//firstName 和lastName 自定义赋值(本例采用,从服务上获取到存到本地,然后填充到表中)

colModel:[
{name:'Id',align:'center'},
{name:'firstName',align:'center'},
{name:'lastName',align:'center'},
],
width:$("#ListDiv").width(),
//在gridComplete属性中循环每一行,设置相应的列的值
gridComplete: function(){
var ids = jQuery("#ListTable").jqGrid('getDataIDs');
for(var i=0;i < ids.length;i++){
var cl = ids[i];
jQuery("#ListTable").jqGrid('setRowData',cl,{firstName:$("#firstName").val(),lastName:$("#lastName").val()});


}
}
});
});


</script>
</head>
<body>
   <div id="ListDiv">
       <!--el表达式 从后台获取的数据 -->
       <input id="firstName" type="hidden" value="${firstName }">
       <input id="lastName" type="hidden" value="${lastName }">
       <table id="ListTable">
       </table>
   </div>
</body>
</html>	

实例2、在单元格中添加按钮

<html>
<head>
<script type="text/javascript">
$(function({
$("#yourTable").jqGrid({
    url:'你的url',
    colNames:["Id", "Name"],
    colModel:[
      {name:"id" ,editable:true},
      {name:"name" ,editable:true},
      {name:"action", index:'action',width:'30%',align:'center',sortable:false}
      ],
      gridComplete: function(){ 
      var ids = jQuery("#yourTable").jqGrid('getDataIDs');
      for(var i=0;i < ids.length;i++){
      var cl = ids[i];
     be = "<input style='height:22px;width:60px;' type='button' id='accBtn"+ cl +"'  value='Edit' onclick=\"btnClick("+cl+",this)\"  />"; 
jQuery("#yourTable").jqGrid('setRowData',cl,{action:be});

}
},
});

}));
    //添加的 按钮的单击事件
    function btnClick(cl,obj){
      var btnStr=$(obj).val();//传过来的button对象,调用的时候通过this关键词设置此参数
    }
    </script>
</head>
<body>
   <div id="ListDiv">
       <table id="yourTable">
       </table>
   </div>
</body>
</html>

抱歉!评论已关闭.