feat: fmRsaj GridView 改用 ObjectDataSource
- RsajDAC 新增 SelectPage/SelectCount - dsRSAJGrid 改 ObjectDataSource;Search/Selected 調整
This commit is contained in:
@@ -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 | 轉換 fmSalaryCalc(SACD):新增 SacdDAC(SelectByProject);dsSACD 改 ObjectDataSource;編譯通過 |
|
||||
| 2026-09-10 | 轉換 fmRpar(RPAR):RparDAC 新增 SelectPage/SelectCount;dsRPARGrid 改 ObjectDataSource;Search/Selected 調整;編譯通過 |
|
||||
| 2026-09-10 | 轉換 fmRparWorker(RPAR/RPAB):RparDAC 新增 SelectWorkerPage/SelectWorkerCount;RpabDAC 新增 SelectRPABByRPREN;dsRPARGrid/dsRPAB 改 ObjectDataSource;編譯通過 |
|
||||
| 2026-09-10 | 轉換 fmRsaj(RSAJ):RsajDAC 新增 SelectPage/SelectCount;dsRSAJGrid 改 ObjectDataSource;編譯通過 |
|
||||
| 2026-09-10 | fmRowk(ROWK)保留未轉換:其 Grid 綁定使用 WUserControlBase 的 Grid_View/GridView_DataSource(SqlDataSource)框架與 override Search,無法直接改用 ObjectDataSource,需另案重構 |
|
||||
|
||||
@@ -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 + "%"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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 != "")
|
||||
|
||||
Reference in New Issue
Block a user