easyui treegrid条件查询和重加载的实现

    这几天在做项目的权限管理模块,其中菜单管理的前台采用jquery1.7.2和Jquery easyui 1.2.6的treegrid控件来实现查询和和分页功能。

    可是在实现这两个功能点时发现treegrid控件没支持类似datagrid的load和reload方法,网络上有的很大一部分是先通过ajax获取数据,然后调用treegrid的reload方法进行渲染。这种方案有个不好的地方就是查询的时候你得自己手动设置当前页和每页显示条数,比较麻烦,浪费了pagination控件封装的分页功能。

    在测试中发现,pagination控件根据输入的页数可以直接获取数据库中当前指定页的内容。于是想到了,treegrid的重加载可以通过自动触发pagination控件页数输入框的keydown事件来实现,而查询即可通过先设置treegrid options的queryParams属性来实现查询信息的设置然后加载第一页信息就可以了。

   treegrid的查询和重载的源码如下:

 

$(document).ready(function(){
	$('#menuItemGridId').treegrid({
		url:"menuCtrl.action?cmd=getMenuItemTree" ,
		queryParams:getQueryParams("menuItemSearchId"),
		idField:'menuItemId',
		treeField:'displayName',
		pageList: [5,10,15],
		pagination:true,
		fitColumns:true,
		rownumbers: true,
		animate:true,
		collapsible:true,
		fitColumns:true,
		showFooter:true
	});
	
});

//查询功能
//menuItemSearchId为查询条件所在的form的id
function searchMenuItem(){
	$("#menuItemGridId").treegrid("options").queryParams = getQueryParams("menuItemSearchId");
	autoLoad($("#menuItemGridId").treegrid("getPager"),1);
}

/**
 * 自动触发分页的加载操作

 * @param pager  各个控件对应的pagination组件
 */
function autoLoad(pager,pageNumber){
	var event = jQuery.Event("keydown");//模拟一个键盘事件        
	event.keyCode = 13;//keyCode=13是回车
	
	pager.find('input.pagination-num').val(pageNumber);	//设置跳转页为当前指定页面
	
	pager.find('input.pagination-num').trigger(event);
}


/**
 * 将指定form参数转换为json对象
 */
function getQueryParams(conditionFormId){
	var searchCondition = getJqueryObjById(conditionFormId).serialize();
	var obj = {};
    var pairs = searchCondition.split('&');
    var name,value;
    
    $.each(pairs, function(i,pair) {
	    pair = pair.split('=');
	    name = decodeURIComponent(pair[0]);
	    value = decodeURIComponent(pair[1]);
	    
	    obj[name] =  !obj[name] ? value :[].concat(obj[name]).concat(value);              //若有多个同名称的参数,则拼接
    });
    
    return obj;
}

/**
 * 根据id获取jquery对象
 * @param id
 */
function getJqueryObjById(id){
	return $("#" + id);
} 

 

   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值