diff --git a/Doc/GridView改用ObjectDataSource計畫.md b/Doc/GridView改用ObjectDataSource計畫.md index 4fbb4f4..7bc257e 100644 --- a/Doc/GridView改用ObjectDataSource計畫.md +++ b/Doc/GridView改用ObjectDataSource計畫.md @@ -24,7 +24,7 @@ | 6 | forms/customer/fmBpja.ascx | gvBPJA | dsBPJAGrid | BPJA | 無→BpjaDAC | **完成** | | 7 | forms/customer/fmBpjb.ascx | gvBPJB | dsBPJBGrid | BPJB | 無→BpjbDAC | **完成** | | 8 | forms/customer/fmBprj.ascx | gvBPRJ | dsBPRJGrid | BPRJ | BprjDAC(+Select) | **完成** | -| 9 | forms/customer/fmBprm.ascx | gvBPRM | dsBPRMGrid | BPRM | BprmDAC | 待辦 | +| 9 | forms/customer/fmBprm.ascx | gvBPRM | dsBPRMGrid | BPRM | BprmDAC(+Select) | **完成** | | 10 | forms/customer/fmRasn.ascx | gvRASN_RAENO | dsRASN_RAENO1 | RASN+BPSNView | RasnDAC | 待辦 | | 11 | forms/customer/fmRasn.ascx | gvRASN_RABRH | dsRASN_RABRH1 | RASN+BCLS | RasnDAC | 待辦 | | 12 | forms/customer/fmRasn.ascx | RASNGrid | dsRASNGrid | RASN/BPJB/BPSNView | RasnDAC | 待辦 | @@ -148,3 +148,4 @@ | 2026-09-10 | 轉換 fmBpja(BPJA):新增 BpjaDAC(SelectPage/SelectCount/SelectBPJAIndex);dsBPJAGrid 改 ObjectDataSource;編譯通過 | | 2026-09-10 | 轉換 fmBpjb(BPJB):新增 BpjbDAC(SelectPage/SelectCount);dsBPJBGrid 改 ObjectDataSource;編譯通過 | | 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 兩個事件;編譯通過 | diff --git a/Web/App_Code/DAC/BprmDAC.cs b/Web/App_Code/DAC/BprmDAC.cs index 9b38681..5cc3188 100644 --- a/Web/App_Code/DAC/BprmDAC.cs +++ b/Web/App_Code/DAC/BprmDAC.cs @@ -8,11 +8,14 @@ using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.Common; +using System.ComponentModel; +using System.Text; using Wellan.Data; /// /// 用來取得專案處理人員資料的類別 /// +[DataObject(true)] public class BprmDAC : Wellan.Data.WDAC { public BprmDAC() @@ -63,4 +66,57 @@ public class BprmDAC : Wellan.Data.WDAC cmd.Parameters.Add(Query.NewParameter("BPPYN", BPPYN)); return Query.Select(cmd); } + + /// + /// 專案處理人員 Grid 分頁查詢 + /// + [DataObjectMethod(DataObjectMethodType.Select)] + public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPNM) + { + DbCommand cmd = Query.NewCommand(); + + StringBuilder filter = new StringBuilder(); + BuildFilter(filter, cmd, BPPNM); + + cmd.CommandText = String.Format( + @"SELECT * FROM + ( + SELECT *, ROW_NUMBER() OVER (ORDER BY BPENO) AS ROWID + FROM BPRM 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 BPPNM) + { + DbCommand cmd = Query.NewCommand(); + + StringBuilder filter = new StringBuilder(); + BuildFilter(filter, cmd, BPPNM); + + cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPRM WHERE 1=1 {0}", filter.ToString()); + return WDAC.GetInt32Value(Query.ExecuteScalar(cmd)); + } + + /// + /// 組出專案處理人員 Grid 的查詢條件 (與舊 AddSearch 行為一致) + /// + private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPNM) + { + if (!string.IsNullOrEmpty(BPPNM)) + { + sb.Append(" AND BPPNM LIKE @BPPNM1 "); + cmd.Parameters.Add(Query.NewParameter("BPPNM1", BPPNM + "%")); + } + } } diff --git a/Web/forms/customer/fmBprm.ascx b/Web/forms/customer/fmBprm.ascx index 201644e..98b81a1 100644 --- a/Web/forms/customer/fmBprm.ascx +++ b/Web/forms/customer/fmBprm.ascx @@ -80,12 +80,13 @@ - + + + + +