a href="javascript:setOrder();">表頭名字/a>,頁面中獲取上次點擊的表頭的名稱和這次點擊的表頭的名稱做比較,如果兩者相同就按原先相反的順序排列,否則新列升序排列,
獲取排列順序的列名及排列順序以后,傳到后臺獲取相應(yīng)sql,添加order by 語句,完成排序功能
排序順序值可在form中存放在隱藏域中,思路就是這樣。
例如在使用Birt報表工具創(chuàng)建報表需要點擊表頭的名稱排序的功能時,可以再表頭名稱處增加一個超鏈接,鏈接內(nèi)容為TargetURL+表頭名稱 ,然后在初始化方法initialize()中判斷原有的表頭名稱是否和傳入的表頭名稱相同以判斷升序和降序,然后獲取sql,添加排序語句,完成功能。以下是我做的報表的一個實例。
復(fù)制代碼 代碼如下:
dataSetName = "fundcatagoryseasontemplate";
sortCol = reportContext.getHttpServletRequest().getParameter("sortCol");//獲取需要排序的列名
sortDir = reportContext.getHttpServletRequest().getParameter("sortDir");//獲取排列順序
currentURL = reportContext.getHttpServletRequest().getRequestURL()+"?"+reportContext.getHttpServletRequest().getQueryString();
sortClause = "";
targetURL = "";
if(sortDir != null){
if(sortDir.indexOf("ASC") != -1){
sortDir = "DESC";
}else{
sortDir = "ASC";
}
}else{
sortDir = "ASC";
}
if(sortCol != null sortCol.length != 0){
sortClause = " order by " + sortCol + " " + sortDir;
}
reportContext.getReportRunnable().getDesignInstance().getDataSet(dataSetName).queryText += sortClause; //獲取并修改底層sql語句
if(currentURL.indexOf("__sorting=") != -1 ){
targetURL = currentURL.substring(0,currentURL.indexOf("__sorting")-1 );
}else{
targetURL = currentURL;
}
targetURL = targetURL + "__sorting=truesortDir="+sortDir+"sortCol=";//修改url