獲取上次點擊的表頭的名稱和這次點擊的表頭的名稱做比較,如果兩者相同就按原先相反的順序排列,否則新列升序排列
<a href="javascript:setOrder();">表頭名字</a>,頁面中獲取上次點擊的表頭的名稱和這次點擊的表頭的名稱做比較,如果兩者相同就按原先相反的順序排列,否則新列升序排列, 獲取排列順序的列名及排列順序以後,傳到後台獲取相應sql,添加order by 語句,完成排序功能 排序順序值可在form中存放在隱藏域中,思路就是這樣。 例如在使用Birt報表工具創建報表需要點擊表頭的名稱排序的功能時,可以再表頭名稱處增加一個超鏈接,鏈接內容為TargetURL+表頭名稱 ,然後在初始化方法initialize()中判斷原有的表頭名稱是否和傳入的表頭名稱相同以判斷升序和降序,然後獲取sql,添加排序語句,完成功能。以下是我做的報表的一個實例。 復制代碼 代碼如下: 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=true&sortDir="+sortDir+"&sortCol=";//修改url