`

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

    博客分类:
  • JS
阅读更多

转载:http://www.iteye.com/topic/1126901

这几天在做项目的权限管理模块,其中菜单管理的前台采用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);
} 

 

分享到:
评论

相关推荐

    TreeGrid控件及Demo源码

    TreeGrid控件及Demo源码 支持Asp.net2.0,MS Ajax,Postback,CallBack(可用来加载子节点),Event(Select,Expend,Collaspe,RowCreate,RowDataBound,RowCommand),DataBind 使用方法与TreeView和GridView相似。 ...

    MVC+EasyUITreeGrid懒加载示例

    MVC+EasyUITreeGrid懒加载示例,主要对EasyUI中TreeGrid组件的使用进行演示。对于正在学此组件的童鞋,不防花个几分钟看一下。本文主要演示:TreeGrid的简单应用、懒加载方法、控件数据格式。

    Easyui在treegrid添加控件的实现方法

    easyui 树加控件 最近看了一个easy感觉里面的树搞得还不错,虽然觉得让人有点不灵活的感觉,我们来说说怎么在树种添加控件效果 在书中添加需要用到formatter这个属性,可以在加载的时候显示 function ...

    js 表格组件

    web 端表格组件,可灵活配置,动态加载数据,支持排序功能

    lazyTreeGrid 延时加载

    针对在dojo中 常用的lazyTreeGrid控件,在展开节点时,访问后台获取数据的相关过程与操作。

    解决EasyUI中Tree的CheckBox不能设置为禁用的问题

    //设置一个标志位,在整棵树加载完成后就将标志位设置为false,不允许勾选checkbox了,在加载数据完成之前是可以勾选的,用来在数据中设置勾选了哪些节点 //这样就可以实现读取url数据时是可以设置勾选了哪些节点,在...

    ligerui-LigerRM-V2

    grid.ashx ---- 通用的ligerGrid表格数据加载入口 treegrid.ashx ---- 通用的ligerGrid表格树格式数据加载入口 tree.ashx ---- 通用的ligerTree树格式数据加载入口 select.ashx ---- 通用的ligerComboBox数据加载...

    jslinb开发指南

    界面的一个模块供Web 应用随时“按需动态加载”。多个分布式界面模块之间也可以通过类似 于“控制反转”的方式实现无缝装配,所以特别适合于团队的分布式开发。linb 对多浏览器的 兼容, 包括IE6+, firefox1.5+, ...

    GoodProject Maven Webapp.zip

    jQuery EasyUI 提供了用于创建跨浏览器网页的完整的组件集合,包括功能强大的 datagrid(数据网格)、treegrid(树形表格)、 panel(面板)、combo(下拉组合)等等。 用户可以组合使用这些组件,也可以单独使用其中一个。 ...

    react-datagrid-getting-started:Flexicious React DataGrid的基本入门项目

    打印,Word / Excel导出,服务器/客户端分页和筛选,可自定义的筛选器控件和摘要页脚,用户设置,首选项持久性 平滑滚动,嵌套层次树/子网格,左/右锁定列,延迟加载/虚拟滚动 指示 开始 npm install npm start ...

    jqGrid:jQuery网格插件

    jqGrid jQuery网格插件jqGrid是启用AjaxJavaScript控件,它提供用于表示和处理Web上表格数据的解决方案。 由于网格是客户端解决方案,可以通过Ajax回调动态加载数据,因此可以将其与任何服务器端技术集成,包括PHP,...

Global site tag (gtag.js) - Google Analytics