`
yunzhongxia
  • 浏览: 648536 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解决DataGrid排序只对当前页有效问题

    博客分类:
  • flex
阅读更多

      项目一期有个问题一直没有解决,今天有空终于把这个问题解决了。

      问题描述,点击datagrid上的排序,排序只是对当前数据源进行排序,点击下一页的时候,没有把前一页的排序方式带过去。

      解决思路:flex的datagrid是基于mvc模式的,排序是对数据源进行排序,从数据源中可以得到Sort,一个Sort里面包含多个SortField 。SortField 里面包含此列的name和排序方式(sort还是desc)

 

    生成排序sql的代码

   /**
         * 生成排序的sql
         * @param ac要排序的ArrayCollection
         * @return 返回排序的sql如果没有排序就返回null
         * 
         */
        public static function createOrderBySql(ac:ArrayCollection):String{
        	var sql:String=null;
        	if(ac==null){
        		return null;
        	}
			var sort:Sort=ac.sort;
			if(sort==null){
				return null;
			}
			var fields:Array=ac.sort.fields;
			if(fields==null){
				return null ;
			}else{
				sql="";
				for(var i:int=0;i<fields.length;i++){
					var sf:SortField=fields[i] as SortField;
					if(sf!=null){
						if(i==(fields.length-1)){
							sql+=" "+sf.name+" "+(sf.descending==true?"desc":"asc");
						}else{
							sql+=" "+sf.name+" "+(sf.descending==true?"desc":"asc")+" , ";
						}
					}
				}
			}
        	return sql;
        }

  

分页时调用生成的排序sql

param.orderBySql=Common.createOrderBySql(userDb);
JdbcService.getInstance(true).callfunc("UserService","query",param,querySuc,queryFal);

 orderBySql是生成的排序sql,java后台处理代码

/**
	 * Query.查询用户信息
	 * 
	 * @param sqlobj the sqlobj
	 * 
	 * @return the map
	 * 
	 * @throws Exception the exception
	 */
	@SuppressWarnings("unchecked")
	public Map query(ASObject sqlobj) throws Exception {
		StringBuffer sb=new StringBuffer();
		String sql="select t.*,g.group_name from amc_base_user t " +
				"left join amc_base_group g on t.group_uuid = g.group_uuid ";
		sb.append(sql);
		Map map = null;
		try {
			int currentPage=Integer.parseInt(sqlobj.get("currentPage").toString());	//得到当前页
			int numPerPage=Integer.parseInt(sqlobj.get("numPerPage").toString());	//得到每页显示条数
			String orderBySql=(String)sqlobj.get("orderBySql");
			if(orderBySql!=null){
				sb.append(" order by  ");
				sb.append(orderBySql);
			}
			logger.debug("currentPage:"+currentPage+" numPerPage:"+numPerPage);
			logger.debug("查询用户信息sql:"+sb.toString());
			
			map= jdbcService.pagination(currentPage, numPerPage, sb.toString());	//查出带有分页信息的内容
			AMCLogService.addLog("查询用户信息", "权限控制");
		} catch (Exception e) {
			logger.info("查询用户信息时发生错误", e);
			throw new Exception("查询用户信息时发生错误!");
		}
		return map;
	}

 

好了,通过这样简单的配置就可以了,排序的结果决定于数据库中字段的数据类型了。

分享到:
评论

相关推荐

    juqery easyui datagrid的排序

    juqery easyui datagrid的排序,当前页面排序。包含数字排序,中文排序,日期排序。

    解决EasyUIdataGrid列比较多,无数据,列展现不全

    2. **性能考虑**:虽然插入空行可以解决问题,但如果表格列数非常多,这种方法可能会对性能产生一定影响。因此,在实际项目中应综合考虑数据量和性能需求。 3. **用户体验**:虽然隐藏空行可以避免视觉干扰,但仍然...

    datagrid排序_选择_分页

    排序是DataGrid的一个关键特性,它允许用户根据某一列或几列对数据进行升序或降序排列,从而提高数据的可读性和易用性。 ##### 实现步骤: 1. **设置AllowSorting属性**:首先,在DataGrid控件的定义中设置`...

    easyui datagrid 表格 打印

    标题“easyui datagrid表格打印”关注的就是如何解决这个问题,即如何将经过formatter处理后的数据在打印时保持原有的格式。 在描述中提到的“支持formatter格式化数据的打印”,指的是Datagrid中用于数据美化和...

    flex datagrid 前台 分页

    4. **数据排序和过滤**:如果需要在前台进行数据排序或过滤,要确保这些操作不会影响到整个数据集,只对当前页的数据进行操作。 5. **状态保存**:如果应用有多个视图或用户离开后再返回,需要保存用户的分页状态,...

    DataGrid绑定数据分页出错

    因此,通常会选择每页只加载一部分数据,用户可以通过翻页来查看其他数据。 #### 问题描述 从题目提供的信息来看,“DataGrid绑定数据分页出错”主要表现在DataGrid虽然绑定了数据,但是分页功能未能正常工作。具体...

    datagrid-export.zip

    1. 数据获取:EasyUI-datagrid提供了获取当前显示数据的方法,如`$.fn.datagrid.getRows`,可以获取到表格中所有的行数据。开发者需要遍历这些数据,将其组织成适合Excel格式的结构。 2. 格式转换:为了保持原有的...

    DataGrid 查找排序

    // 获取当前页数据 int skip = (currentPage - 1) * pageSize; cmd.CommandText = $"SELECT * FROM TableName ORDER BY SomeColumn OFFSET {skip} ROWS FETCH NEXT {pageSize} ROWS ONLY"; adapter.SelectCommand = ...

    WPF DataGrid分页功能

    5. **显示页码**:为了显示当前页和总页数,你需要计算总页数(`TotalPages = Math.Ceiling((double)totalCount / pageSize)`),并创建相应的导航按钮或者显示控件。 6. **导航功能**:创建“上一页”、“下一页”...

    datagrid-dnd(可以拖放的datagrid)

    在IT行业中,datagrid是一种常用的组件,它用于展示和管理大量结构化的数据,通常在Web应用中使用。在本例中,我们关注的是一个名为"datagrid-dnd"的特性,这是一项允许用户通过拖放操作来重新排列数据网格行的功能...

    功能齐全的DataGrid分页例子

    服务器端分页是在服务器上进行计算,每次只加载当前页的数据,减少对客户端资源的占用;客户端分页则通过JavaScript在浏览器端处理,提供更流畅的用户体验,但可能增加服务器的负载。 服务器端分页的基本步骤如下:...

    datagrid-detailview.js datagrid-bufferview.js datagrid-groupview.js

    在BufferView模式下,datagrid只加载当前可视范围内的数据,减少内存占用和初始加载时间。`datagrid-bufferview.js`提供了处理缓冲数据流和动态加载的逻辑,尤其适合处理大数据集的应用。 3. **GroupView**: ...

    如何优化大数据量加载DataGrid

    ServerMode允许DataGrid在服务器端处理数据分页、排序和过滤,而不是在客户端执行这些操作。这意味着,只有当前页面所需的数据才会被加载到客户端,从而显著减少了网络传输的数据量和客户端内存的占用。具体实施方法...

    JS EasyUI DataGrid动态加载数据

    在这种模式下,服务器端负责处理分页逻辑,仅返回当前页所需的数据,而不是整个数据集。 6. **处理异步请求**: 在实际应用中,可能需要处理异步请求带来的问题,比如防止重复请求、错误处理等。可以通过设置请求...

    vb中datagrid控件的详细使用方法

    虚拟化意味着只加载当前可视区域的数据,而不是一次性加载所有数据。 10. **自定义功能** 除了基本功能外,`DataGrid`还可以通过扩展来实现更多自定义功能,例如添加按钮列进行操作,或者添加下拉列表选择。 总的...

    自定义datagrid

    你可以设置每页显示的数据量,添加上一页、下一页、跳转到指定页数的按钮,以及显示当前页数和总页数。同时,确保分页功能与后端API良好配合,只加载当前所需的页面数据,降低服务器压力。 4. **交互性增强**:为了...

    datagrid的使用方法

    本文将深入探讨 DataGrid 的使用方法、特点以及常见问题的解决策略。 1. **创建 DataGrid** 创建 DataGrid 控件通常涉及在设计视图中拖放控件或在代码中实例化。例如,可以使用以下代码创建一个空的 DataGrid: `...

    WPF MVVM DataGrid分页案例

    1. **创建ViewModel**:ViewModel应包含表示当前页数据的集合,以及用于导航页码的属性,如CurrentPage和TotalPages。同时,需要定义一个Command,例如LoadDataCommand,用于加载新页面的数据。 2. **数据源准备**...

    ADO DataGrid 数据库全操作

    通过调整页码,只加载当前页的数据,提高页面加载速度。 9. **异常处理和错误处理** 在进行数据库操作时,应始终捕获并处理可能出现的异常。例如,使用On Error Resume Next和Err对象来处理错误。 10. **优化性能...

    自定义Datagrid

    开发者可以通过实现自己的分页逻辑,结合数据虚拟化技术,确保只加载当前视图所需的记录,从而提高应用程序的响应速度。 该资源包含了源码、示例和文档,这对于学习和理解自定义Datagrid的实现至关重要。源码提供了...

Global site tag (gtag.js) - Google Analytics