欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

sigma-grid分页的后盾方法

更新时间: 2014-05-12 17:54:50 责任编辑: Author_N1

 

Sigma-grid分页的后台方法

 

1.客户端sigma-grid的loadURL:../../service?action=BaseQuery因为是示例,所以在SQL语句直接写在sigma-grid的gridOption中:

beforeLoad : function(reqParam , grid )
{
	reqParam.parameters={"LoadSQL":"select id,name,refid1 from test,"UpdateSQL":""}
},			
loadURL:'../../service?action=BaseQuery'

 服务端BaseQuery代码:

 

public class BaseQuery implements EAServletInterface {
          public String Response(HttpServletRequest request,HttpServletResponse response) throws Exception {
	ParseJSON parseJson ;
	String resultStr = "";
   	try{
		parseJson = new ParseJSON();
		Map gtJsonIn = parseJson.parseJSON2Map( request.getParameter("_gt_json") );   	
		resultStr = parseJson.getSplitPageJsonString(gtJsonIn);
	}catch(Exception e){
		e.printStackTrace();
	}
		
		return resultStr;
	}

}

 其中ParseJSON类的只要就是把JSON字符串或对象,转换成别的形式:Map,Array,POJO,XML.....

    public Map parseJSON2Map(JSONObject jsonObj){
        Iterator it = jsonObj.keys();
        String key;
        Object value;
        Map valueMap = new HashMap();
        while(it.hasNext()){
            key = (String) it.next();
            value = jsonObj.get(key);
            valueMap.put(key, value);

        }
        return valueMap;
    }    

 下面是转换成分面后的JSON字符串

 

public String getSplitPageJsonString(Map map) throws EAException{
	   	 EADatabase db = null;
		 EAXmlDS ds = null;
		 String ret = "";
    	try{
	    	 db = new EADatabase();
	    	 //从参数中查询出SQL
	    	 Map sqlMap = this.parseJSON2Map((JSONObject)map.get("parameters"));
	    	 String update_sql = (String) sqlMap.get("UpdateSQL");
	    	 if (update_sql.indexOf("update")>-1 || update_sql.indexOf("UPDATE")>-1){
	    		 db.ExcecutSQL(update_sql);
	    	 }
	    	 String sql = (String) sqlMap.get("LoadSQL");
	    	 Map r_pageInfo =  this.parseJSON2Map((JSONObject)map.get("pageInfo"));   
	    	 int totalRowNum= ((Integer) r_pageInfo.get("totalRowNum")).intValue();   
	    	 int startRowNum= ((Integer) r_pageInfo.get("startRowNum")).intValue();   
	    	 int pageSize= ((Integer) r_pageInfo.get("pageSize")).intValue();
	    	 int pageNum = ((Integer) r_pageInfo.get("pageNum")).intValue();

	    	 ds = db.QuerySQL(sql);	    	 
	    	 totalRowNum = ds.getRowCount();	    	 
	    	 int endRowNum = pageSize * pageNum;
	    	 if (endRowNum == totalRowNum){
	    		 endRowNum = totalRowNum;
	    	 }
	    	 //总页数
	    	 int totalPageNum = (totalRowNum+pageSize)/pageSize;
	    	 	    	
	    	 ArrayList data = new ArrayList();
	    	 String sqlstr = "select * from (select rownum rno,t.* from ("+sql+")t) where rno>="+startRowNum +" and rno<"+endRowNum;
		//这里的ds是写的一个二维的结果,类似于数据库表的数据结构
	    	 ds = db.QuerySQL(sqlstr);
	    	 for (int row = 0;row < ds.getRowCount() ;row++){	    		 
	    		 HashMap record = new HashMap();
	    		 for (int col = 0;col < ds.getColumnCount(); col++){
	    			 record.put(ds.getColumnName(col), ds.getStringAt(row,col));
	    		 }
    			 data.add(record);
	    	 }   	 
	    	 Map pageInfo = new HashMap();
	    	 pageInfo.put("pageSize", pageSize);
	    	 pageInfo.put("pageNum", pageNum);
	    	 pageInfo.put("totalRowNum", totalRowNum);
	    	 pageInfo.put("startRowNum", startRowNum);
	    	 pageInfo.put("endRowNum", endRowNum);
	    	 
	    	 Map gtJsonOut=new HashMap();   
    	     gtJsonOut.put("pageInfo",pageInfo);   
    	     gtJsonOut.put("data",data ); 
    	     
    	     ret =  this.getJsonString4Map(gtJsonOut);   

	    	 db.Commit();
    	}catch(Exception e){
    		db.Close();
    		e.printStackTrace();
    	}finally{
    		if ( db != null ){
    			db.Close();
    		}
    		
    	}

    	return ret;
    }

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-05-12 17:54:50
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/122595/
本文WWW.DOC100.NET DOC100.NET版权所有。