From e8fb81958e2295626fc180577a64984e839ec48d Mon Sep 17 00:00:00 2001 From: Neo Yang Date: Thu, 10 Sep 2026 10:47:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20fmRpfe=20GridView=20=E6=94=B9=E7=94=A8?= =?UTF-8?q?=20ObjectDataSource?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 RpfeDAC(SelectPage/SelectCount) - dsRPFEGrid 改 ObjectDataSource;Search/Selected 調整 --- Doc/GridView改用ObjectDataSource計畫.md | 3 +- Web/App_Code/DAC/RpfeDAC.cs | 82 +++++++++++++++++++++++++ Web/forms/customer/fmRpfe.ascx | 12 ++-- Web/forms/customer/fmRpfe.ascx.cs | 18 +----- 4 files changed, 94 insertions(+), 21 deletions(-) create mode 100644 Web/App_Code/DAC/RpfeDAC.cs diff --git a/Doc/GridView改用ObjectDataSource計畫.md b/Doc/GridView改用ObjectDataSource計畫.md index f4a1c1c..02b6983 100644 --- a/Doc/GridView改用ObjectDataSource計畫.md +++ b/Doc/GridView改用ObjectDataSource計畫.md @@ -28,7 +28,7 @@ | 10 | forms/customer/fmRasn.ascx | gvRASN_RAENO | dsRASN_RAENO1 | RASN+BPSNView | RasnDAC(+Select) | **完成** | | 11 | forms/customer/fmRasn.ascx | gvRASN_RABRH | dsRASN_RABRH1 | RASN+BCLS | RasnDAC(+Select) | **完成** | | 12 | forms/customer/fmRasn.ascx | RASNGrid | dsRASNGrid | RASN/BPJB/BPSNView | RasnDAC(+Select) | **完成** | -| 13 | forms/customer/fmRpfe.ascx | RPFEGrid | dsRPFEGrid | RPFE | 無 | 待辦 | +| 13 | forms/customer/fmRpfe.ascx | RPFEGrid | dsRPFEGrid | RPFE | 無→RpfeDAC | **完成** | | 14 | forms/flow/fmSign.ascx | gvRPAB2 | dsRPAB2 | RPAB | RpabDAC | 待辦 | | 15 | forms/flow/fmSign.ascx | gvRPAB | dsRPAB | RPAB | RpabDAC | 待辦 | | 16 | forms/summary/fmSalaryCalc.ascx | GridView1 | dsSACD | SACD | 無 | 待辦 | @@ -150,3 +150,4 @@ | 2026-09-10 | 轉換 fmBprj(BPRJ):BprjDAC 新增 SelectPage/SelectCount/SelectBPRJIndex(含 LAST_YEAR 排序);dsBPRJGrid 改 ObjectDataSource;編譯通過 | | 2026-09-10 | 轉換 fmBprm(BPRM):BprmDAC 新增 SelectPage/SelectCount;dsBPRMGrid 改 ObjectDataSource;dsBPRM_Selected 拆分為 grid/form 兩個事件;編譯通過 | | 2026-09-10 | 轉換 fmRasn(RASN,3 個 Grid):RasnDAC 新增 SelectPage/SelectCount 及 SelectRAENO/SelectRABRH;三個 datasource 改 ObjectDataSource;Search/Selected 調整;編譯通過 | +| 2026-09-10 | 轉換 fmRpfe(RPFE):新增 RpfeDAC(SelectPage/SelectCount);dsRPFEGrid 改 ObjectDataSource;編譯通過 | diff --git a/Web/App_Code/DAC/RpfeDAC.cs b/Web/App_Code/DAC/RpfeDAC.cs new file mode 100644 index 0000000..af02379 --- /dev/null +++ b/Web/App_Code/DAC/RpfeDAC.cs @@ -0,0 +1,82 @@ +using System; +using System.Data; +using System.Data.Common; +using System.Text; +using System.ComponentModel; +using Wellan.Data; + +/// +/// 專案憑證的資料處理類別 +/// +[DataObject(true)] +public class RpfeDAC : Wellan.Data.WDAC +{ + public RpfeDAC() + { + } + + public RpfeDAC(string connectionConfig, string connectionConfigName) + : this() + { + this._connectionConfig = connectionConfig; + this._connectionConfigName = connectionConfigName; + } + + public RpfeDAC(WQuery query) + { + this._query = query; + } + + /// + /// 專案憑證 Grid 分頁查詢 + /// + [DataObjectMethod(DataObjectMethodType.Select)] + public DataTable SelectPage(int startRowIndex, int maximumRows, string RPPYN) + { + DbCommand cmd = Query.NewCommand(); + + StringBuilder filter = new StringBuilder(); + BuildFilter(filter, cmd, RPPYN); + + cmd.CommandText = String.Format( + @"SELECT * FROM + ( + SELECT *, ROW_NUMBER() OVER (ORDER BY RPPYN, RPREN) AS ROWID + FROM RPFE WHERE 1=1 {0} + ) AS TMP + WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS + ORDER BY ROWID", + filter.ToString()); + cmd.Parameters.Add(Query.NewParameter("STARTROWINDEX", startRowIndex)); + cmd.Parameters.Add(Query.NewParameter("MAXIMUMROWS", maximumRows)); + + return Query.Select(cmd); + } + + /// + /// 專案憑證 Grid 查詢筆數 + /// + [DataObjectMethod(DataObjectMethodType.Select)] + public int SelectCount(string RPPYN) + { + DbCommand cmd = Query.NewCommand(); + + StringBuilder filter = new StringBuilder(); + BuildFilter(filter, cmd, RPPYN); + + cmd.CommandText = String.Format("SELECT COUNT(*) FROM RPFE WHERE 1=1 {0}", filter.ToString()); + return WDAC.GetInt32Value(Query.ExecuteScalar(cmd)); + } + + /// + /// 組出專案憑證 Grid 的查詢條件 (與舊 AddSearch 行為一致) + /// + private void BuildFilter(StringBuilder sb, DbCommand cmd, string RPPYN) + { + if (!string.IsNullOrEmpty(RPPYN)) + { + sb.Append(" AND RPPYN LIKE @RPPYN1 "); + cmd.Parameters.Add(Query.NewParameter("RPPYN1", RPPYN + "%")); + } + } +} diff --git a/Web/forms/customer/fmRpfe.ascx b/Web/forms/customer/fmRpfe.ascx index 3da22b6..c332f26 100644 --- a/Web/forms/customer/fmRpfe.ascx +++ b/Web/forms/customer/fmRpfe.ascx @@ -6,11 +6,13 @@ TextMessageId="FMRPFE.NAME"> - - + + + + +