表头名字,页面中获取上次点击的表头的名称和这次点击的表头的名称做比较,如果两者相同就按原先相反的顺序排列,否则新列升序排列,
获取排列顺序的列名及排列顺序以后,传到后台获取相应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
希望与广大网友互动??
点此进行留言吧!
本文介绍如何在BIRT报表工具中实现表头点击排序功能。通过比较前后两次点击的表头名称来确定排序方式,并将排序信息传递给后端以生成带有ORDER BY子句的SQL查询。此外,还提供了具体的代码示例。

1414

被折叠的 条评论
为什么被折叠?



