feat: fmRpfe GridView 改用 ObjectDataSource

- 新增 RpfeDAC(SelectPage/SelectCount)

- dsRPFEGrid 改 ObjectDataSource;Search/Selected 調整
This commit is contained in:
2026-09-10 10:47:19 +08:00
parent fca50b7715
commit e8fb81958e
4 changed files with 94 additions and 21 deletions
+2 -1
View File
@@ -28,7 +28,7 @@
| 10 | forms/customer/fmRasn.ascx | gvRASN_RAENO | dsRASN_RAENO1 | RASN+BPSNView | RasnDAC(+Select) | **完成** | | 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) | **完成** | | 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) | **完成** | | 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 | 待辦 | | 14 | forms/flow/fmSign.ascx | gvRPAB2 | dsRPAB2 | RPAB | RpabDAC | 待辦 |
| 15 | forms/flow/fmSign.ascx | gvRPAB | dsRPAB | RPAB | RpabDAC | 待辦 | | 15 | forms/flow/fmSign.ascx | gvRPAB | dsRPAB | RPAB | RpabDAC | 待辦 |
| 16 | forms/summary/fmSalaryCalc.ascx | GridView1 | dsSACD | SACD | 無 | 待辦 | | 16 | forms/summary/fmSalaryCalc.ascx | GridView1 | dsSACD | SACD | 無 | 待辦 |
@@ -150,3 +150,4 @@
| 2026-09-10 | 轉換 fmBprjBPRJ):BprjDAC 新增 SelectPage/SelectCount/SelectBPRJIndex(含 LAST_YEAR 排序);dsBPRJGrid 改 ObjectDataSource;編譯通過 | | 2026-09-10 | 轉換 fmBprjBPRJ):BprjDAC 新增 SelectPage/SelectCount/SelectBPRJIndex(含 LAST_YEAR 排序);dsBPRJGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBprmBPRM):BprmDAC 新增 SelectPage/SelectCountdsBPRMGrid 改 ObjectDataSourcedsBPRM_Selected 拆分為 grid/form 兩個事件;編譯通過 | | 2026-09-10 | 轉換 fmBprmBPRM):BprmDAC 新增 SelectPage/SelectCountdsBPRMGrid 改 ObjectDataSourcedsBPRM_Selected 拆分為 grid/form 兩個事件;編譯通過 |
| 2026-09-10 | 轉換 fmRasnRASN3 個 Grid):RasnDAC 新增 SelectPage/SelectCount 及 SelectRAENO/SelectRABRH;三個 datasource 改 ObjectDataSourceSearch/Selected 調整;編譯通過 | | 2026-09-10 | 轉換 fmRasnRASN3 個 Grid):RasnDAC 新增 SelectPage/SelectCount 及 SelectRAENO/SelectRABRH;三個 datasource 改 ObjectDataSourceSearch/Selected 調整;編譯通過 |
| 2026-09-10 | 轉換 fmRpfeRPFE):新增 RpfeDACSelectPage/SelectCount);dsRPFEGrid 改 ObjectDataSource;編譯通過 |
+82
View File
@@ -0,0 +1,82 @@
using System;
using System.Data;
using System.Data.Common;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 專案憑證的資料處理類別
/// </summary>
[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;
}
/// <summary>
/// 專案憑證 Grid 分頁查詢
/// </summary>
[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);
}
/// <summary>
/// 專案憑證 Grid 查詢筆數
/// </summary>
[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));
}
/// <summary>
/// 組出專案憑證 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
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 + "%"));
}
}
}
+7 -5
View File
@@ -6,11 +6,13 @@
TextMessageId="FMRPFE.NAME"></cc1:WLabel> TextMessageId="FMRPFE.NAME"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server" <asp:CustomValidator ID="cvMessage" runat="server"
Display="None"></asp:CustomValidator> Display="None"></asp:CustomValidator>
<asp:SqlDataSource ID="dsRPFEGrid" runat="server" <asp:ObjectDataSource ID="dsRPFEGrid" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM RPFE WHERE (1 = 0)" TypeName="RpfeDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa" EnablePaging="true" OnSelected="dsRPFEGrid_Selected">
ProviderName="System.Data.SqlClient" OnSelected="dsRPFEGrid_Selected"> <SelectParameters>
</asp:SqlDataSource> <asp:Parameter Name="RPPYN" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRPFEForm" runat="server" <asp:SqlDataSource ID="dsRPFEForm" runat="server"
UpdateCommand="UPDATE RPFE SET &#13;&#10; RPENO = @RPENO, &#13;&#10; RPDAT = @RPDAT, &#13;&#10; RPACC = @RPACC, &#13;&#10; RPAMT = @RPAMT, &#13;&#10; RPDOC = @RPDOC, &#13;&#10; APPNO = APPNO + 1, &#13;&#10; TRDAT = GETDATE(),&#13;&#10; TRMOD = 'UPDATE',&#13;&#10; TRUSR = @TRUSR&#13;&#10;WHERE RPREN = @OLD_RPREN&#13;&#10; AND APPNO = @OLD_APPNO" UpdateCommand="UPDATE RPFE SET &#13;&#10; RPENO = @RPENO, &#13;&#10; RPDAT = @RPDAT, &#13;&#10; RPACC = @RPACC, &#13;&#10; RPAMT = @RPAMT, &#13;&#10; RPDOC = @RPDOC, &#13;&#10; APPNO = APPNO + 1, &#13;&#10; TRDAT = GETDATE(),&#13;&#10; TRMOD = 'UPDATE',&#13;&#10; TRUSR = @TRUSR&#13;&#10;WHERE RPREN = @OLD_RPREN&#13;&#10; AND APPNO = @OLD_APPNO"
DeleteCommand="DELETE FROM RPFE&#13;&#10;WHERE RPREN = @OLD_RPREN&#13;&#10; AND APPNO = @OLD_APPNO" DeleteCommand="DELETE FROM RPFE&#13;&#10;WHERE RPREN = @OLD_RPREN&#13;&#10; AND APPNO = @OLD_APPNO"
+3 -15
View File
@@ -23,10 +23,6 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
{ {
private string _RPPYN = ""; private string _RPPYN = "";
private int _YY = 0; private int _YY = 0;
private string select = "SELECT * ";
private string from = " FROM RPFE ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY RPPYN, RPREN";
private TextBox[] RPDATs = new TextBox[10]; private TextBox[] RPDATs = new TextBox[10];
private DropDownList[] RPACCs = new DropDownList[10]; private DropDownList[] RPACCs = new DropDownList[10];
private TextBox[] RPAMTs = new TextBox[10]; private TextBox[] RPAMTs = new TextBox[10];
@@ -47,7 +43,6 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
{ {
base.OnInit(e); base.OnInit(e);
dsRPFEForm.ConnectionString = ConnectionString; dsRPFEForm.ConnectionString = ConnectionString;
dsRPFEGrid.ConnectionString = ConnectionString;
dsRPFE_RPACC.ConnectionString = ConnectionString; dsRPFE_RPACC.ConnectionString = ConnectionString;
dsRPFE_RPENO.ConnectionString = ConnectionString; dsRPFE_RPENO.ConnectionString = ConnectionString;
@@ -152,14 +147,7 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
// 查詢動作 // 查詢動作
private new void Search() private new void Search()
{ {
StringBuilder sql = new StringBuilder(); dsRPFEGrid.SelectParameters["RPPYN"].DefaultValue = _RPPYN;
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsRPFEGrid.SelectParameters.Clear();
AddSearch(sql, dsRPFEGrid, "RPPYN", _RPPYN, "", true);
sql.Append(order);
dsRPFEGrid.SelectCommand = sql.ToString();
} }
private int CheckInsertInput(int index) private int CheckInsertInput(int index)
@@ -229,9 +217,9 @@ public partial class forms_customer_fmRpfe : Wellan.Web.UI.WUserControlBase
RPFEGrid.DataBind(); RPFEGrid.DataBind();
} }
protected void dsRPFEGrid_Selected(object sender, SqlDataSourceStatusEventArgs e) protected void dsRPFEGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{ {
if (e.AffectedRows == 0) if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{ {
//RPFEForm.ChangeMode(FormViewMode.Insert); //RPFEForm.ChangeMode(FormViewMode.Insert);
//RPFEForm_ModeChanged(sender, e); //RPFEForm_ModeChanged(sender, e);