首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

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

2012-11-23 
解决DataGrid排序只对当前页有效问题????? 项目一期有个问题一直没有解决,今天有空终于把这个问题解决了。?

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

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

????? 问题描述,点击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;}

?

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

热点排行