基本jqgrid封装

/**
 * 获取分页列表
 *  参数:json格式 
 *  options={ 
 * grid_selector:''//表格
 * pager_selector:''//分页 
 * popup:true,判断是否是弹出层,如果弹出层调用此方法必须传此参数
 *   url : '',//数据请求url
 *   colNames:[],//列表的列名(数组)
 * colModel:[  如果需要某一列生成时为输入框模式则需要添加editable : true属性 , //列表内容(json)
 * caption:"",//列表名称 
 *      multiSort:true,(非必填)可选参数true/false,默认为true,为true时支持多列排序。
 * sortname :""按字段排序,如field1 asc,field2 desc...fieldN(字段名 排序类型)。注意最后一个字段是没有asc或者desc的
 * sortorder:""升序/降序
 * methods : function(){},用来传自己需要的方法 在加载jqgrid列表后调用
 *   edit:"column",//(非必填)设置编辑模式"column"为某一列变为可编辑模式,"line"为选中行变为可编辑模式
 * multiselect:true//左侧选择列是(true),否(false)显示,
 * rowSelectFun:funtion(rowId,status){},//列表行选中事件,当选择行时触发此事件。rowid:当前行id;status:选择状态,当multiselect 为true时此参数才可用
 * buttons:[{
 * type:""//可选值"button"(按钮),"separator"(分隔符)
 * caption : "",//按钮名称
 * title : "添加角色",
 * buttonicon: "ace-icon fa fa-plus-circle purple",//按钮icon
 * onClickButton : add,
 * position : "last"//按钮位置 
 * }]//自定义按钮
 * }
 */
$.fn.getList = function(options){
var grid_selector = options.grid_selector;
var pager_selector = options.pager_selector;

//行编辑事件保存标记
var lastSel;

var multiselect = true;
if(options.multiselect == false){
multiselect = options.multiselect
}


var multiSort=true;
if(options.multiSort){
multiSort=options.multiSort;
}

var multiboxonly=false;
if(options.multiboxonly){
multiboxonly=options.multiboxonly;
}
   
$(grid_selector).jqGrid({

//请求路径
url : options.url,

//提交到后台的参数
postData : options.postData,

//数据类型
datatype : "json",

//请求类型
mtype : 'POST',

//语言类型
i18n:'zh-cn',

//解析从Server端发回来的json数据
jsonReader : {
root : "data.list",
records : "data.count",// 总记录数
total : "data.pageCount",// 总页数
page : "data.pageNo"// 当前页
},

//高度自适应
height : "auto",

//列显示名称
colNames : options.colNames,

//列表内容
colModel : options.colModel,

//显示总记录数
viewrecords : true,

//页面初始化时表格显示的记录数
rowNum:10,

//表格显示的记录数
rowList:[10,20,30],

//翻页用的导航栏
pager : pager_selector,

//默认拍序列
sortname : options.sortname,

//排序顺序
sortorder : options.sortorder,

//表格隔行换色
altRows : true,

//定义可以多选
multiselect : multiselect,

//定义是否支持多列排序
multiSort:multiSort,

shrinkToFit:true,

multiboxonly:multiboxonly,

       //当从服务器返回响应时加载下方翻页按钮
       loadComplete : function(response){
//判断用户是否登录超时,如果超时跳转到登录页面
$.fn.Global.isLoginTimeOut(response);
var table = this;
setTimeout(function(){updatePagerIcons(table);enableTooltips(table);}, 0);
},

//表格点击事件
onSelectRow:function(rowId,status){
if(options.rowSelectFun != null){
options.rowSelectFun(rowId,status);
}
},

//当表格加载时默认加载事件
gridComplete : function() {
if(options.gridCompleteFun != null){
options.gridCompleteFun();
}

if(options.popup){
$(options.grid_selector).jqGrid('setGridWidth',$('.modal-body', parent.document).width()-40);
}else{
$(options.grid_selector).jqGrid('setGridWidth',$(".page-content").width());
}

//设置表头标题居中
$('.ui-jqgrid-sortable').css("text-align","center");


//取得宽度的像素值
//var widpx = $('.jqgfirstrow td:last-child').css('width');

//去掉最后的px
//var wid = widpx.substring(0,widpx.length - 2);

//宽度减1
//$('.jqgfirstrow td:last-child').css('width',parseInt(wid) - 1);

$(grid_selector).css("border-left","0");

//设置编辑模式"column"时,设置列可以编辑
if(options.edit == "column"){
           var ids = $(grid_selector).jqGrid('getDataIDs');
           for ( var i = 0; i < ids.length; i++) {
            $(grid_selector).jqGrid('editRow', ids[i]);
           }
}
},

//表格双击编辑事件
ondblClickRow: function(id){
//设置编辑模式"line"时,设置行可编辑
if(options.edit == "line"){
//重置gird的选中状态
//$("#grid-table").resetSelection();
    if(id && id!==lastSel){ 
       $(grid_selector).saveRow(lastSel, {url: options.saveurl,extraparam:{token: $.cookie("token")}}); 
       lastSel=id; 
    }
    $(grid_selector).editRow(id, {keys:true, url: options.saveurl,extraparam:{token: $.cookie("token")}});
    //选中编辑行
    $("#grid-table").setSelection(id);
}
},
 
//表格名称
caption : options.caption
});

// 调整大小以适应页面大小
$(window).on('resize.jqGrid',function() {

if(options.popup){

$(options.grid_selector).jqGrid('setGridWidth',$('.modal-body', parent.document).width()-40);
}else{
$(options.grid_selector).jqGrid('setGridWidth',$(".page-content").width());

}
})

//触发窗口调整大小
$(window).triggerHandler('resize.jqGrid');


// 与fontawesome图标像上面所替换图标
function updatePagerIcons(table) {
var replacement = {
'ui-icon-seek-first' : 'ace-icon fa fa-angle-double-left bigger-140',
'ui-icon-seek-prev' : 'ace-icon fa fa-angle-left bigger-140',
'ui-icon-seek-next' : 'ace-icon fa fa-angle-right bigger-140',
'ui-icon-seek-end' : 'ace-icon fa fa-angle-double-right bigger-140'
};
$('.ui-pg-table:not(.navtable) > tbody > tr > .ui-pg-button > .ui-icon').each(
function() {
var icon = $(this);
var $class = $.trim(icon.attr('class').replace('ui-icon', ''));


if ($class in replacement)
icon.attr('class', 'ui-icon '+ replacement[$class]);
})
}


function enableTooltips(table) {
$('.navtable .ui-pg-button').tooltip({
container : 'body'
});
$(table).find('.ui-pg-div').tooltip({
container : 'body'
});
}


$(document).on('ajaxloadstart', function(e) {
$(grid_selector).jqGrid('GridUnload');
$('.ui-jqdialog').remove();
});

// navButtons
$(grid_selector).jqGrid('navGrid', pager_selector, {
// navbar options
edit : false,
add : false,
del : false,
search : false,
refresh : false,
view : false
})

//绑定操作按钮
if(options.buttons){
if (options.buttons.length > 0) {
$.each(options.buttons, function(i) {
var type = options.buttons[i].type;
switch(type){
case "button":
jQuery(grid_selector).navButtonAdd(pager_selector,options.buttons[i]);
break;
case "separator":
jQuery(grid_selector).navSeparatorAdd(pager_selector,options.buttons[i]);
break;
}
});
}
}
};

有喜欢的朋友可以关注下头条号《老徐聊技术

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值