官方文档:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jqgriddocs
jqGrid使用总结
http://blog.csdn.net/wpcxyking/article/details/5909180
jqGrid的属性列表:
http://www.helloweba.com/view-blog-162.html
jqgrid 的一些操作 动态增加列 用本地 数据 修改表格
http://www.17jquery.com/javascript/47180/
初始化JqGrid的方法大概参数
http://www.cnblogs.com/zzjj296/archive/2009/11/29/1613341.html
jqGrid操作说明
http://wenku.baidu.com/view/e4a66b8683d049649b6658bf
jqGrid 属性说明
http://www.cnblogs.com/Gavinzhao/archive/2010/11/26/1888503.html
jqGrid中文说明文档-事件
http://www.helloweba.com/view-blog-163.html
jqGrid中文说明文档-方法
http://a3mao.iteye.com/blog/541541
jqGrid编辑单元格的事件 备忘1
http://blog.chinaunix.net/uid-7276097-id-3298044.html
jQuery学习笔记--JqGrid相关操作 方法列表 备忘 重点讲解(超重要)
http://blog.csdn.net/jpr1990/article/details/6891115
支持多种类型的数据集合作为数据源[jqGrid的若干种用法]
http://www.cnblogs.com/HopeGi/archive/2012/10/16/jqGrid.html,讲述许多特殊功能,比如滚动条进行翻页等.....
jqgrid使用:常用属性用法和含义【转贴】
http://rautinee.iteye.com/blog/875988, 对于滚动翻页的设置不一样。。。待确认哪种是有效的。
//设置了这个才会根据
滚动分页读取数据
scroll: 1, 或者 scroll:true, 好像也没问题
jqgrid合并单元格
http://bbs.blueidea.com/thread-3067461-1-1.html
关于获得
所有rowId:
http://blog.sina.com.cn/s/blog_025270e901015yad.html
其实跟getDataIDs()这个方法一模一样,这个方法就是获得所有rowId的。
获得某一个属性的访问格式:
var colModel = grid.jqGrid("getGridParam",'colModel');
var colNames= grid.jqGrid("getGridParam",'colNames');
相反,设定使用
setGridParam
Grid属性:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options
列属性:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colmodel_options
事件:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events
方法:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods
获得被选择的行:
getSelectedGridData : function(grid){
var selarrrowIDs =JQGridUtils.getGridParam(grid,"selarrrow");
var array=[];
if (selr.length) {
for (var i = 0; i < selarrrowIDs.lenght; i++) {
var myrow = jQuery('#grid').jqGrid('getRowData', selarrrowIDs[i]);
array[array.length]=myrow.NIF;
}
}
return array;
}
下面可以获取选择一行的id,如果你选择多行,那下面的id是最后选择的行的id:
var id=$(‘#gridTable’).jqGrid(‘getGridParam’,'selrow’);
如果想要获取选择多行的id,那这些id便封装成一个id数组,那可以使用以下:
var ids=$(‘#gridTable’).jqGrid(‘getGridParam’,'selarrrow’);
如果想获取选择的行的数据,只要传入rowId即可,如下:
var rowData = $(“#gridTable”).jqGrid(‘getRowData’,rowId);
而这个rowData是一个对象,如果要获取选择的行的这个对象的属性值,如name的值,需如下:
var rowName=rowData.name;
当然你这个对象得有name这个属性才行
jqGrid获得所有行数据的方法
function testJqfrid(){
var obj = $("#tablename").jqGrid("getRowData");
alert(obj.length);
jQuery(obj).each(function(){
alert(this.RECEIPT_ORDER_NO);
});
var ret = $("#tablename").jqGrid("getRowData", 0); //获得第一行的数据
}
1.到这里下载:
http://www.trirand.com/blog/
2.导入:没有在下载里面找到,那么去网上找。
<!-- Grid Start -->
<link rel="stylesheet" type="text/css" href="<%=basePath%>/common/js/jquery.jqGrid/css/jquery-ui-1.8.1.custom.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>/common/js/jquery.jqGrid/css/ui.jqgrid.css">
<script src="<%=basePath%>/common/js/jquery.jqGrid/jquery-ui-1.8.1.custom.min.js" type="text/javascript"></script>
<script src="<%=basePath%>/common/js/jquery.jqGrid/jquery.layout-latest.js" type="text/javascript"></script>
<script src="<%=basePath%>/common/js/jquery.jqGrid/js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script type="text/javascript">
$.jgrid.no_legacy_api = true;
$.jgrid.useJSON = true;
</script>
<script src="<%=basePath%>/common/js/jquery.jqGrid/js/jquery.jqGrid.src.js" type="text/javascript"></script>
<!-- datepicker of grid and page -->
<link rel="stylesheet" type="text/css" media="screen" href="<%=basePath%>/css/jquery.ui.datepicker.css" />
<script src="<%=basePath%>/common/js/jquery.ui.datepicker.js" type="text/javascript"></script>
<!-- Grid Start -->
3.使用
var lastsel2;
var mydata2 = [
{id:"12345",name:"Desktop Computer",note:"note",stock:"Yes",ship:"FedEx",sdate:"2007-12-03"},
{id:"12346",name:"Desktop Computer",note:"note",stock:"Yes",ship:"FedEx",sdate:"2007-12-03"}
];
jQuery("#rowed5").jqGrid({
datatype: "local",
height: 250,
colNames:['ID','Name', 'Stock', 'Ship via','Notes','Date'],
colModel:[
{name:'id',index:'id', width:100, sorttype:"int", editable: true},
{name:'name',index:'name', width:100,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:150, 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"}},
{name:'sdate',index:'sdate',width:100, editable:true, sorttype:"date"},
],
onSelectRow: function(id){
if(id && id!==lastsel2){
jQuery('#rowed5').jqGrid('restoreRow',lastsel2);
jQuery('#rowed5').jqGrid('editRow',id,true);
lastsel2=id;
$( "#"+id+"_sdate" ).datepicker();
}
},
editurl: "server.php",
caption: "Data of Cost Centre"
});
for (var i = 0; i < mydata2.length; i++) {
jQuery("#rowed5").jqGrid('addRowData', mydata2[i].id, mydata2[i]);
}
4.临时问题:
A:不知道怎么显示不了Datepicker,官方的例子,我没运行成功,不知道是ui.datepikcer.js的版本都对还是咋滴。
所以只好在
onSelectRow: function(id){
if(id && id!==lastsel2){
$( "#"+id+"_sdate" ).datepicker(); //解决弹出DatePicker问题。
}
}
B:调用它提供的方法使用类似:
jQuery('#rowed5').jqGrid('restoreRow',lastsel2);
自行调用:
假如不想直接save到服务器,而是保存到本地array,然后自行调用服务器
http://stackoverflow.com/questions/4485970/jqgrid-rowobject-inconsistencies/4486142#4486142
1.初始化Grid:
jQuery("#rowed5").jqGrid({
datatype: "local",
//这里随便给一个能调用的地址就好。不设定的话,总是出错。
editurl: "ServerAction.action?p=pandy",
cellsubmit : "clientArray",
......
}
2.得到数据:
var gridData = $("#rowed5").jqGrid('getGridParam', 'data');
重载 JQuery的jqGrid的重载
重新设置jqGrid的url,并调用重载方法,可实现jqGrid的重载刷新;
示例:
var url = "getList.jsp?name=ling";
jQuery("#tableId").jqGrid('setGridParam',{url:url}).trigger("reloadGrid");
其中,tableId是所在列表table的id;
重新初始化,假如改变了colnum的结构, 然后重新初始化. 只
能先卸载Grid再进行重绘,才能达到改变列的目的。
jQuery("#list47").GridUnload();
reloadGrid();//重新初始化并载入数据
编辑:
var lastsel;
.....
jQuery("#tb_grid").jqGrid({
......
colModel:[
{name:'wellcome_title',index:'wellcome_title', width:80, editable:true},
......
],
onSelectRow: function(id){
if(id && id!==lastsel){
jQuery('#tb_grid').jqGrid('restoreRow',lastsel);
jQuery('#tb_grid').jqGrid('editRow',id,true);
lastsel=id;
}
},
editurl: "server.php",
......
});
修改,保存,重置三个方法
jQuery('#rowed2').editRow('"+cl+"');
jQuery('#rowed2').saveRow('"+cl+"');
jQuery('#rowed2').restoreRow('"+cl+"');
注意:传入editUrl里面的数据,只包括可编辑的数据,除id外,id并不是根据column name来定义的,直接是是id这个字符串。提交方式是post
jqGrid编辑框动态加载Combo下拉菜单选项
参考:
http://lvjava.com/?p=710
http://stackoverflow.com/questions/16104664/jqgrid-dataurl-in-searchoptions-not-working-with-jqgrid4-4-5
{ name: 'destinations', ditable: true, edittype:'select',
editoptions: { dataUrl:'<%= Url.Action("GetDestinationList","Home") %>',
buildSelect: function(data) {
var response = jQuery.parseJSON(data.responseText);
var s = '<select>';
if (response && response.length) {
for (var i = 0, l=response.length; i<l ; i++) {
var ri = response[i];
s += '<option value="'+ri+'">'+ri+'</option>';
}
}
return s + "</select>";
}
}
}
修改导航信息,添加保存成功回调函数
inlineNav:这个方式,在传到后台的时候,自动得到主键id字段,要自己根据需要来获取。
var myEditOptions = {
keys: true,
oneditfunc: function (rowid) {
alert("row with rowid=" + rowid + " is editing.");
},
aftersavefunc: function (rowid, response, options) {
alert("row with rowid=" + rowid + " is successfuly modified.");
}
};
jQuery("#tb_grid").jqGrid('navGrid', "#div_pg", {edit: false, add: false, del: false, save: false});
jQuery("#tb_grid").jqGrid('inlineNav', "#div_pg",{
addtext: "Add",
edittext: "Edit",
savetext: "Save",
canceltext: "Cancel",
addParams: {
position: "afterSelected",
addRowParams: myEditOptions
},
addedrow: "last",
editParams: myEditOptions
});
subGrid: JQGrid的Subgrid
http://my.oschina.net/firnice/blog/77312
1,subgrid 4.0之后才支持json
2, subgrid是根据jqgrid对象再次绑定一个列表。
jsonReader:{
root:"jqgridJson", // 从服务端返回的实际数据,名字随意起,但是在Action类中必须有与之匹配的属性,可以是rows
repeatitems : false,
subgrid: {
root:"subgridchid", //子级的内容 Action类中必须有与之匹配的属性,可以是rows
repeatitems: false //false之后 subGridModel的mapping才起作用
}
},
subGrid : true,
subGridUrl: '<%=path%>/jqgridTest/subgridchid.action',
subGridModel: [{ name:['标号','内容','备注'],
width : [55,80,80],
mapping : ['no','item','qty']}
]
后台需要定义一个id变量 用来接受点击加号传过来的id,此id就是主表的key。
private String id;
其余的思路与主表一样,对应的action写方法 给root的subgridchid赋值
注意:在自己的使用的时候,只有两个repeatitems=false才不会报错
导航:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator&s[]=navgrid,使用参数参考官方文档。
1.设定grid的自己的导航
jQuery("#" + gId).jqGrid('navGrid', "#" + pId, {edit: true, add: true, del: true, save: true});
, 国际化界面要在cn.js文件修改。
2. 自定义导航:跟下面自动以导航相似
jQuery("#" + gId).jqGrid('inlineNav', "#" + pId, {
addtext: "增加",
edittext: "修改",
savetext: "保存",
deltext: "删除",
canceltext: "取消",
/*addParams: {
position: "afterSelected",
addRowParams: myEditOptions
},*/
addedrow: "last",
editParams: myEditOptions
});
自定义导航按钮:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:custom_buttons&s[]=navgrid
jQuery("#grid_id")
.navGrid('#pager',{edit:false,add:false,del:false,search:false})
.navButtonAdd('#pager',{
caption:"Add",
buttonicon:"ui-icon-add",
onClickButton: function(){
alert("Adding Row");
},
position:"last"
})
.navButtonAdd('#pager',{
caption:"Del",
buttonicon:"ui-icon-del",
onClickButton: function(){
alert("Deleting Row");
},
position:"last"
});
editUrl的返回值,回调函数
http://rautinee.iteye.com/blog/660000
var editOptions={
afterSubmit: function(response,postdata){
alert("SAVE:"+response.responseText);//显示返回值
//这里是否需要返回,得看源码或者帮助文档
}
}
var delOptions={
afterSubmit: function(response,postdata){
var r= $.parseJSON(response.responseText);//动态页返回json格式的字符串,如{success:true/false}之类的,为false添加err属性什么的,成功则返回new_id
//这里要返回一个数组,
// 1.true/false,表示是否成功。
// 2.message字符串
// 3. delete_id
return [r.success,r.message,r.new_id];
}
}
jQuery("#" + gId).jqGrid('navGrid', "#" + pId, {edit: true, add: true, del: true, save: true},editOptions,{},delOptions,{},{});
参数格式:
jQuery("#grid_id").jqGrid('navGrid','#gridpager',{parameters},prmEdit, prmAdd, prmDel, prmSearch, prmView);
改变参数并重新加载
jQuery("#" + gridId).jqGrid('setGridParam',{postData:{.......}});
jQuery("#" + gridId).trigger("reloadGrid");
设定列宽度
http://stackoverflow.com/questions/12171640/jqgrid-changing-the-width-of-a-column-dynamically
$("#mygrid").jqGrid('setColProp','amount',{width:new_width});
var gw = $("#mygrid").jqGrid('getGridParam','width');
$("#mygrid").jqGrid('setGridWidth',gw);
等比放缩: shrinkToFit:默认值为true。
如果shrinkToFit为true且设置了width值,则每列宽度会根据width成比例缩放;
如果shrinkToFit为false且设置了width值,则每列的宽度不会成比例缩放,而是保持原有设置,而Grid将会有水平滚动条。
设定某一rowid被选中:$("#temptableid").setSelection(1);
jqgrid的一些参数说明:
http://lbxhappy.iteye.com/blog/1533400
1、colNames:列名称,用于描述在界面上显示的列名称
colNames: ['编号','科室名称','联系人','联系电话','主管科室','状态','备注','opertype'],
2、colModel:列名称对应的model,该model内的各个列要和colNames的各个列进行一一对应
可以对各个列设置属性,name属性药设置为json数据的key名称,也就是我们的Bean的对应属性名称,width:宽度,editable代表是否可编辑,edittype代表编辑框的类型,可以是 text、select、texare、checkbox等类型,formatter:格式化显示的数据,unformat:处于编辑状态后反格式化到以前的数据
如:
colModel: [
{name:'dpt_code',index:'dpt_code',width:110,editable: true,edittype:"text",cellEdit:false,editrules:{required:true}},
{name:'dpt_name',index:'dpt_name',width:110,editable: true,edittype:"text"},
{name:'dpt_manager',index:'dpt_manager',width:100,editable: true,edittype:"text"},
{name:'dpt_tel',index:'dpt_tel',width:120,editable: true,edittype:"text", editrules:{custom:true, custom_func:telcheck}},
{name:'dpt_mandpt',index:'dpt_mandpt',editable: true,edittype:"text"},
{name:'dpt_status',index:'dpt_status',formatter:formatStatus,width:60,editable: true,edittype:"select",unformat:unformatStatus, editoptions :{value:'STP:停用'+';'+'USE:使用'}},
{name:'dpt_remark',index:'dpt_remark',editable: true,edittype:"text"},
{name:'opertype',index:'opertype',editable: false,edittype:"text",hidden:true},
],
3、id:代表整个数据表格的一个ID,没条数据的ID必须是唯一的,常和后台数据表ID对应,
id:dpt_code
4、caption:设置数据表格的标题名称
caption: "科室管理11",
5、rowNum:设置表格默认显示记录的条数,用于分页
rowNum:20
6、rowList:供用户选择每页显示的记录数
rowList:[10,20,30,40],
7、pager: 用指定表格的工具栏
pager: '#pageDiv',pageDiv是页面某个DIV的ID
8、pgbuttons:true, 是否显示页面分页按钮
9、 multiselect:'true',是指是否可以进行多选
10、altRows:'true',是否开启,提示功能
11、 multiboxonly:true 是否在多选的时候,显示复选框
12、height: 398,代表表格的高度
13、cellEdit:true,是否开启单元格的编辑功能
14、cellsubmit:'remote',remote代表每次编辑提交后进行服务器保存,clientArray只保存到数据表格不保存到服务器
15、cellurl:'departmentAction!updateCell.action',cellsubmit要提交的后台路径
16、scrollrows:true是否可以出现滚动条
17、shrinkToFit:false是否固定每列的宽度
18、editurl:表格的添加、修改、删除按钮所提交的路径
editurl:'departmentAction!updateDepartment2.action',
19、sortname:默认排序的列
sortname: 'dpt_sort',
20、jsonReader:解析json数据的参数
jsonReader: {
repeatitems : false,
id: "dpt_code" //对应后台数据的ID
},
21、prmNames :向后台交互时,所设置的参数名称对应的值
prmNames : {
page:"department.curr_page", // 表示请求页码的参数名称
rows:"department.page_size", // 表示请求行数的参数名称
sort: "department.sort_field", // 表示用于排序的列名的参数名称
order: "department.sord", // 表示采用的排序方式的参数名称
search:"search", // 表示是否是搜索请求的参数名称
totalrows:"department.totalrows" // 表示需从Server得到总共多少行数据的参数名称,参见jqGrid选项中的rowTotal
}
22、gridComplete:设置表格数据加载完毕后,所执行的操作
gridComplete:function(){
if($("#gridTable").getDataIDs().length>0){
$("#gridTable").jqGrid('setSelection',$("#gridTable").getDataIDs()[0]);//默认选中第一行
}
},
23、onSelectRow:表格某行被选中后执行的操作:
onSelectRow:function(){
loadDataGrid();
},
24、ondblClickRow:数据某行所执行的操作
25、beforeSelectRow:某行记录在被选中前执行操作
26、afterSelectRow:某行记录再被选中后所执行操作
27、设置表格的添加、删除、修改、查询按钮是否显示,也可以自定义按钮
search:false不显示查询按钮,add_options主要设置点添加按钮后弹出框的样式及模式
navButtonAdd:通过该方法可以添加自定义的按钮
var add_options={
width:400,
height:290,
left:20,
top:30,
reloadAfterSubmit:false,
jqModal:false,
addCaption: "添加部门信息",
bSubmit: "保存",
bCancel: "关闭",
closeAfterAdd:true
};
jQuery("#gridTable").jqGrid('navGrid','#pageDiv',{search:false,edit:true,add:true,del:true},edit_options,add_options,{},{},{}).navButtonAdd('#pageDiv',{
caption:"添加",edit:true显示编辑按钮
title:'添加药品信息',
buttonicon:"ui-icon-update",
onClickButton:function(){
tb_show('添加科室信息','/simpleProj/bsic/departmentAction!addDepartment.action?TB_iframe=true&height=420&width=630&keepThis=false"',true);
},
position:"last"
});
28、获取表格总行数
var ids = $("#gridTable").getDataIDs();获得所有数据的ID数组
29、按ID获取某行数据操作:
$("#gridTable").jqGrid("getRowData",id);
30、获取选中行的记录,如果设置的multiselect为true那么获取的是数组反正是一个对象
var re = $("#gridTable").jqGrid('getGridParam','selrow'),返回一个json对象,可以通过如下方式访问:
re.dpt_name,re.dpt_tel
31、在数据网格动态增加行操作
rowid代表行号、dataRow一条josn数据,last指向表格最后一行追加
$("#gridTable").jqGrid("addRowData", rowid, dataRow, "last");