feat: fmRsaj GridView 改用 ObjectDataSource

- RsajDAC 新增 SelectPage/SelectCount

- dsRSAJGrid 改 ObjectDataSource;Search/Selected 調整
This commit is contained in:
2026-09-10 11:00:06 +08:00
parent f1cf00d06c
commit b66279e5fa
4 changed files with 75 additions and 22 deletions
+2 -1
View File
@@ -37,7 +37,7 @@
| 19 | forms/worker/fmRpar.ascx | RPARGrid | dsRPARGrid | RPAR | RparDAC(+Select) | **完成** |
| 20 | forms/worker/fmRparWorker.ascx | RPABGrid | dsRPAB | RPAB | RpabDAC(+Select) | **完成** |
| 21 | forms/worker/fmRparWorker.ascx | RPARGrid | dsRPARGrid | RPAR | RparDAC(+Select) | **完成** |
| 22 | forms/worker/fmRsaj.ascx | RSAJGrid | dsRSAJGrid | RSAJ | RsajDAC | 待辦 |
| 22 | forms/worker/fmRsaj.ascx | RSAJGrid | dsRSAJGrid | RSAJ | RsajDAC(+Select) | **完成** |
| 23 | forms/worker/fmSendSalaryStrip.ascx | gvSSMS | dsSSMS | SSMS | SsmsDAC | 待辦 |
| 24 | forms/worker/fmSendSalaryStrip.ascx | gvSSMSSum | dsSSMSSum | SSMS | SsmsDAC | 待辦 |
@@ -155,4 +155,5 @@
| 2026-09-10 | 轉換 fmSalaryCalcSACD):新增 SacdDACSelectByProject);dsSACD 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmRparRPAR):RparDAC 新增 SelectPage/SelectCountdsRPARGrid 改 ObjectDataSourceSearch/Selected 調整;編譯通過 |
| 2026-09-10 | 轉換 fmRparWorkerRPAR/RPAB):RparDAC 新增 SelectWorkerPage/SelectWorkerCountRpabDAC 新增 SelectRPABByRPRENdsRPARGrid/dsRPAB 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmRsajRSAJ):RsajDAC 新增 SelectPage/SelectCountdsRSAJGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | fmRowkROWK)保留未轉換:其 Grid 綁定使用 WUserControlBase 的 Grid_View/GridView_DataSourceSqlDataSource)框架與 override Search,無法直接改用 ObjectDataSource,需另案重構 |
+61
View File
@@ -1,12 +1,15 @@
using System;
using System.Data;
using System.Data.Common;
using System.ComponentModel;
using System.Text;
using Wellan.Data;
using Wellan.Common;
/// <summary>
/// 薪資加減項資料處理類別
/// </summary>
[DataObject(true)]
public class RsajDAC : Wellan.Data.WDAC
{
public RsajDAC()
@@ -127,4 +130,62 @@ public class RsajDAC : Wellan.Data.WDAC
cmd.Parameters.Add(Query.NewParameter("RSYMM", yymm));
return GetStringValue(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 薪資加減項 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string RSENO, string RSPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, RSENO, RSPYN);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY RSYMM DESC, RSREN DESC) AS ROWID
FROM RSAJ 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 RSENO, string RSPYN)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, RSENO, RSPYN);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM RSAJ WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 組出薪資加減項 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string RSENO, string RSPYN)
{
if (!string.IsNullOrEmpty(RSENO))
{
sb.Append(" AND RSENO LIKE @RSENO1 ");
cmd.Parameters.Add(Query.NewParameter("RSENO1", RSENO + "%"));
}
if (!string.IsNullOrEmpty(RSPYN))
{
sb.Append(" AND RSPYN LIKE @RSPYN1 ");
cmd.Parameters.Add(Query.NewParameter("RSPYN1", RSPYN + "%"));
}
}
}
+8 -4
View File
@@ -6,10 +6,14 @@
TextMessageId="FMRSAJ.NAME"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server"
Display="None"></asp:CustomValidator>
<asp:SqlDataSource ID="dsRSAJGrid" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM RSAJ WHERE (1 = 0)"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa"
ProviderName="System.Data.SqlClient" OnSelected="dsRSAJGrid_Selected"></asp:SqlDataSource>
<asp:ObjectDataSource ID="dsRSAJGrid" runat="server"
TypeName="RsajDAC" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
EnablePaging="true" OnSelected="dsRSAJGrid_Selected">
<SelectParameters>
<asp:Parameter Name="RSENO" Type="String" />
<asp:Parameter Name="RSPYN" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRSAJForm" runat="server"
ConflictDetection="CompareAllValues" SelectCommand="SELECT * FROM RSAJ WHERE RSREN = @RSREN"
DeleteCommand="DELETE RSAJ WHERE RSREN = @OLD_RSREN AND APPNO = @OLD_APPNO"
+4 -17
View File
@@ -23,11 +23,6 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
protected DateTime _YYMM;
protected string _RSENO = "";
protected string _RSPYN = "";
private string select = "SELECT * ";
private string from = " FROM RSAJ ";
private string where = " WHERE 1=1 ";
// private string order = " ORDER BY RSPYN, RSREN";
private string order = " ORDER BY RSYMM DESC, RSREN DESC";
private TextBox[] RSYMMs = new TextBox[10];
private DropDownList[] RSENOs = new DropDownList[10];
private TextBox[] RSAMTs = new TextBox[10];
@@ -48,7 +43,6 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
{
base.OnInit(e);
dsRSAJForm.ConnectionString = ConnectionString;
dsRSAJGrid.ConnectionString = ConnectionString;
dsRSAJ_RSENO.ConnectionString = ConnectionString;
dsRSAJ_RSENO.SelectCommand =
@"IF @RSPYN = '-ALL-'
@@ -201,15 +195,8 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
// 查詢動作
private new void Search()
{
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsRSAJGrid.SelectParameters.Clear();
AddSearch(sql, dsRSAJGrid, "RSENO", _RSENO, "", true);
AddSearch(sql, dsRSAJGrid, "RSPYN", _RSPYN, "", true);
sql.Append(order);
dsRSAJGrid.SelectCommand = sql.ToString();
dsRSAJGrid.SelectParameters["RSENO"].DefaultValue = _RSENO;
dsRSAJGrid.SelectParameters["RSPYN"].DefaultValue = _RSPYN;
}
// 存檔前的計算動作
@@ -254,9 +241,9 @@ public partial class forms_worker_fmRsaj : Wellan.Web.UI.WUserControlBase
RSAJGrid.DataBind();
}
protected void dsRSAJGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
protected void dsRSAJGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.AffectedRows == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
/*
if (ForwardSource != "")