实现该功能主要依赖于API提供的三个方法。loadComplete,onSelectAll,onSelectRow
方法名 | 参数 | 功能 |
loadComplete | xhr | 当从服务器返回响应时执行,xhr:XMLHttpRequest 对象 |
onSelectAll |
aRowid s,statu s | multiselect为ture,且点击头部的checkbox时才会触发此事件。aRowids:所有选中行的id集合,为一个数组。statu s:boolean变量说明checkbox的选择状态,true选中false不选中。无论checkbox是否选择,aRowids始终有 值 |
onSelectRow |
rowid,status | 当选择行时触发此事件。rowid:当前行id;status:选择状态,当multiselect 为true时此参数才可用 |
//新建一个数组,存放已勾选的id
var arrayNewList = new Array();
$("#proList").jqGrid({
url:"<%= basePath %>/mPromo/selectProList.do",
queryFormId:"queryForm",
colNames:["产品编码","产品名称","分类编码","分类名称","二级产品线编码","二级产品线名称","id"],
colModel:[
{name:"code",index:"code",align:'center',width:80},
{name:"name",index:"name",align:'left',width:100},
{name:"categoryCode", index:"categoryCode",align:'left',width:80},
{name:"categoryName", index:"categoryName",align:'left',width:100},
{name:"productLineTwoCode",index:"productLineTwoCode",align:"left",width:80},
{name:"productLineTwoName",index:"productLineTwoName",align:"left",width:100},
{name:'id',index:'id',width:1,hidden:true/*,key:true*/}
],
pager:"#gridPager",
height: '350',
beforeRequest:function(){
if(gridParam.page!=""&&gridParam.page!=undefined&&gridParam.flag){
gridParam.flag=false;
$("#proList").setGridParam(gridParam);
}
},
jsonReader: {id: "code"},
multiselect: true,
//为表格增加复选框
gridComplete:function(){
tb_init("a.thickbox, area.thickbox, input.thickbox");
var rowIds = jQuery("#proList").jqGrid('getDataIDs');
for(var k=0; k<rowIds.length; k++) {
var curRowData = jQuery("#proList").jqGrid('getRowData', rowIds[k]);
var curChk = $("#"+rowIds[k]+"").find(":checkbox");
curChk.attr('name', 'checkboxname'); //给每一个checkbox赋名字
curChk.attr('value', curRowData['code']); //给checkbox赋值
}
},
loadComplete:function(xhr){
var array = xhr.list;
if (arrayNewList.length > 0) {
$.each(array, function (i, item) {
if (arrayNewList.indexOf(item.code) > -1) {
//判断arrayNewList中存在item.code值时,选中前面的复选框,
$("#jqg_proList_" + item.code).attr("checked", true);
}
});
}
},
onSelectAll:function(aRowids,status){
if(status==true){
//循环aRowids数组,将code放入arrayNewList数组中
$.each(aRowids,function(i,item){
saveData(item);
})
}else{
//循环aRowids数组,将code从arrayNewList中删除
$.each(aRowids,function(i,item){
deleteIndexData(item);
})
}
},
onSelectRow:function(aRowids,status){
if(status==true){
saveData(aRowids);
}else{
deleteIndexData(aRowids);
}
}
});
function saveData(obj){
arrayNewList.push(obj);
}
function deleteIndexData(obj){
//获取obj在arrayNewList数组中的索引值
for(i = 0; i < arrayNewList.length; i++){
if (arrayNewList[i] == obj){
//根据索引值删除arrayNewList中的数据
arrayNewList.remove(i);
i--;
}
}
}