首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

表格點擊表頭排序功能實作邏輯與 BIRT 報表示例

     編輯:關於JSP

核心邏輯:記錄上一次點擊的欄位名,若再次點擊同欄位則切換升/降序,否則預設升序。將排序欄位與方向傳至後端,拼接 SQL ORDER BY 子句完成排序。

前端邏輯

  • 表頭加超連結:<a href="javascript:setOrder('colName')">欄位名</a>
  • 隱藏域儲存 sortCol、sortDir。
  • 提交表單或 AJAX 送至後端。

BIRT 報表實作範例

// BIRT report 初始化腳本
dataSetName = "fundcatagoryseasontemplate";
sortCol = reportContext.getHttpServletRequest().getParameter("sortCol");
sortDir = reportContext.getHttpServletRequest().getParameter("sortDir");
currentURL = reportContext.getHttpServletRequest().getRequestURL() + "?" +
             reportContext.getHttpServletRequest().getQueryString();

sortClause = "";
targetURL = "";

if (sortDir != null) {
    sortDir = sortDir.indexOf("ASC") != -1 ? "DESC" : "ASC"; // 切換方向
} else {
    sortDir = "ASC";
}

if (sortCol != null && sortCol.length() > 0) {
    sortClause = " ORDER BY " + sortCol + " " + sortDir;
}

// 修改資料集 SQL
reportContext.getReportRunnable().getDesignInstance()
    .getDataSet(dataSetName).queryText += sortClause;

// 重構 URL 保持排序狀態
if (currentURL.indexOf("__sorting=") != -1) {
    targetURL = currentURL.substring(0, currentURL.indexOf("__sorting") - 1);
} else {
    targetURL = currentURL;
}
targetURL += "&__sorting=true&sortDir=" + sortDir + "&sortCol=" + sortCol;

關鍵點

  • BIRT 透過 reportContext 取得 HTTP 參數與修改資料集 SQL。
  • URL 重構保留排序參數,支援分頁、刷新後狀態保持。
  • 通用邏輯同樣適用於普通 JSP/Servlet + JDBC 場景。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved