feat: fmRparWorker GridView 改用 ObjectDataSource

- RparDAC 新增 SelectWorkerPage/SelectWorkerCount

- RpabDAC 新增 SelectRPABByRPREN

- dsRPARGrid/dsRPAB 改 ObjectDataSource;Search/Selected 調整
This commit is contained in:
2026-09-10 10:57:21 +08:00
parent 3cb2c0d97c
commit f1cf00d06c
5 changed files with 98 additions and 23 deletions
+3 -2
View File
@@ -35,8 +35,8 @@
| 17 | forms/worker/fmBpsn.ascx | GridView1 | dsBPSNGrid | BPSNView | BpsnDAC | **進行中** | | 17 | forms/worker/fmBpsn.ascx | GridView1 | dsBPSNGrid | BPSNView | BpsnDAC | **進行中** |
| 18 | forms/worker/fmRowk.ascx | gvROWK | dsROWKGrid | ROWK | 無 | **保留**(使用 WUserControlBase 的 SqlDataSource 框架,需另案) | | 18 | forms/worker/fmRowk.ascx | gvROWK | dsROWKGrid | ROWK | 無 | **保留**(使用 WUserControlBase 的 SqlDataSource 框架,需另案) |
| 19 | forms/worker/fmRpar.ascx | RPARGrid | dsRPARGrid | RPAR | RparDAC(+Select) | **完成** | | 19 | forms/worker/fmRpar.ascx | RPARGrid | dsRPARGrid | RPAR | RparDAC(+Select) | **完成** |
| 20 | forms/worker/fmRparWorker.ascx | RPABGrid | dsRPAB | RPAB | RpabDAC | 待辦 | | 20 | forms/worker/fmRparWorker.ascx | RPABGrid | dsRPAB | RPAB | RpabDAC(+Select) | **完成** |
| 21 | forms/worker/fmRparWorker.ascx | RPARGrid | dsRPARGrid | RPAR | RparDAC | 待辦 | | 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 | 待辦 |
| 23 | forms/worker/fmSendSalaryStrip.ascx | gvSSMS | dsSSMS | SSMS | SsmsDAC | 待辦 | | 23 | forms/worker/fmSendSalaryStrip.ascx | gvSSMS | dsSSMS | SSMS | SsmsDAC | 待辦 |
| 24 | forms/worker/fmSendSalaryStrip.ascx | gvSSMSSum | dsSSMSSum | SSMS | SsmsDAC | 待辦 | | 24 | forms/worker/fmSendSalaryStrip.ascx | gvSSMSSum | dsSSMSSum | SSMS | SsmsDAC | 待辦 |
@@ -154,4 +154,5 @@
| 2026-09-10 | 轉換 fmSignRPAB):RpabDAC 新增 SelectRPABdsRPAB2/dsRPAB 改 ObjectDataSourcedsRPAB2_Selecting 改 ODS 事件;編譯通過 | | 2026-09-10 | 轉換 fmSignRPAB):RpabDAC 新增 SelectRPABdsRPAB2/dsRPAB 改 ObjectDataSourcedsRPAB2_Selecting 改 ODS 事件;編譯通過 |
| 2026-09-10 | 轉換 fmSalaryCalcSACD):新增 SacdDACSelectByProject);dsSACD 改 ObjectDataSource;編譯通過 | | 2026-09-10 | 轉換 fmSalaryCalcSACD):新增 SacdDACSelectByProject);dsSACD 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmRparRPAR):RparDAC 新增 SelectPage/SelectCountdsRPARGrid 改 ObjectDataSourceSearch/Selected 調整;編譯通過 | | 2026-09-10 | 轉換 fmRparRPAR):RparDAC 新增 SelectPage/SelectCountdsRPARGrid 改 ObjectDataSourceSearch/Selected 調整;編譯通過 |
| 2026-09-10 | 轉換 fmRparWorkerRPAR/RPAB):RparDAC 新增 SelectWorkerPage/SelectWorkerCountRpabDAC 新增 SelectRPABByRPRENdsRPARGrid/dsRPAB 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | fmRowkROWK)保留未轉換:其 Grid 綁定使用 WUserControlBase 的 Grid_View/GridView_DataSourceSqlDataSource)框架與 override Search,無法直接改用 ObjectDataSource,需另案重構 | | 2026-09-10 | fmRowkROWK)保留未轉換:其 Grid 綁定使用 WUserControlBase 的 Grid_View/GridView_DataSourceSqlDataSource)框架與 override Search,無法直接改用 ObjectDataSource,需另案重構 |
+14
View File
@@ -304,4 +304,18 @@ public class RpabDAC : Wellan.Data.WDAC
cmd.Parameters.Add(Query.NewParameter("RPREN", RPREN)); cmd.Parameters.Add(Query.NewParameter("RPREN", RPREN));
return Query.Select(cmd); return Query.Select(cmd);
} }
/// <summary>
/// 取得簽核關卡明細 (全部)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRPABByRPREN(string RPREN)
{
DbCommand cmd = Query.NewCommand(
@"SELECT RPANO, RPAPN, RPENO, RPDAT, RPAPP, RPDOC
FROM RPAB
WHERE RPREN = @RPREN");
cmd.Parameters.Add(Query.NewParameter("RPREN", RPREN));
return Query.Select(cmd);
}
} }
+62
View File
@@ -1975,6 +1975,68 @@ public class RparDAC : Wellan.Data.WDAC
} }
} }
} }
/// <summary>
/// 差勤紀錄 Grid 分頁查詢 (員工本人)
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectWorkerPage(int startRowIndex, int maximumRows, string RPNUM_FIXED, string RPRDT1, string RPRDT2, string rparType)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildWorkerGridFilter(filter, cmd, RPNUM_FIXED, RPRDT1, RPRDT2, rparType);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT {0}, ROW_NUMBER() OVER (ORDER BY RPREN) AS ROWID
FROM RPAR {1}
) AS TMP
WHERE ROWID BETWEEN @STARTROWINDEX + 1 AND @STARTROWINDEX + @MAXIMUMROWS
ORDER BY ROWID",
RparGridColumns, 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 SelectWorkerCount(string RPNUM_FIXED, string RPRDT1, string RPRDT2, string rparType)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildWorkerGridFilter(filter, cmd, RPNUM_FIXED, RPRDT1, RPRDT2, rparType);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM RPAR {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
private void BuildWorkerGridFilter(StringBuilder sb, DbCommand cmd, string RPNUM_FIXED, string RPRDT1, string RPRDT2, string rparType)
{
sb.Append(" WHERE RPNUM = @RPNUM_FIXED ");
cmd.Parameters.Add(Query.NewParameter("RPNUM_FIXED", RPNUM_FIXED));
switch (rparType)
{
case "0":
sb.Append(" AND RPTYP LIKE '0%' AND RPADT IS NOT NULL ");
break;
case "1":
sb.Append(" AND RPTYP LIKE '1%' AND RPADT IS NOT NULL ");
break;
case "3":
sb.Append(" AND RPTYP LIKE '3%' AND RPADT IS NOT NULL ");
break;
}
AppendRparRange(sb, cmd, "RPRDT", RPRDT1, RPRDT2, false);
}
} }
+13 -7
View File
@@ -5,9 +5,16 @@
TagPrefix="uc1" %> TagPrefix="uc1" %>
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle"></cc1:WLabel> <cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server" Display="None"></asp:CustomValidator> <asp:CustomValidator ID="cvMessage" runat="server" Display="None"></asp:CustomValidator>
<asp:SqlDataSource ID="dsRPARGrid" runat="server" ConflictDetection="CompareAllValues" <asp:ObjectDataSource ID="dsRPARGrid" runat="server"
SelectCommand="SELECT * FROM RPAR WHERE (1 = 0)" ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa" TypeName="RparDAC" SelectMethod="SelectWorkerPage" SelectCountMethod="SelectWorkerCount"
ProviderName="System.Data.SqlClient" OnSelected="dsRPARGrid_Selected"></asp:SqlDataSource> EnablePaging="true" OnSelected="dsRPARGrid_Selected">
<SelectParameters>
<asp:Parameter Name="RPNUM_FIXED" Type="String" />
<asp:Parameter Name="RPRDT1" Type="String" />
<asp:Parameter Name="RPRDT2" Type="String" />
<asp:Parameter Name="rparType" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRPARForm" runat="server" <asp:SqlDataSource ID="dsRPARForm" runat="server"
InsertCommand="INSERT INTO RPAR InsertCommand="INSERT INTO RPAR
(RPREN, RPNUM, RAITM, RPCNM, RPPYN, RPRDT, RPEDT, (RPREN, RPNUM, RAITM, RPCNM, RPPYN, RPRDT, RPEDT,
@@ -182,14 +189,13 @@
</SelectParameters> </SelectParameters>
</asp:ObjectDataSource> </asp:ObjectDataSource>
<asp:SqlDataSource ID="dsRPAB" runat="server" ConnectionString="Data Source=SRYANG-X200\SQL2K8;Initial Catalog=THINKYU_WEB_TY;Integrated Security=True" <asp:ObjectDataSource ID="dsRPAB" runat="server"
ProviderName="System.Data.SqlClient" TypeName="RpabDAC" SelectMethod="SelectRPABByRPREN">
SelectCommand="SELECT [RPANO], [RPAPN], [RPENO], [RPDAT], [RPAPP], [RPDOC] FROM [RPAB] WHERE [RPREN] = @RPREN">
<SelectParameters> <SelectParameters>
<asp:ControlParameter ControlID="RPARGrid" Name="RPREN" PropertyName="SelectedValue" <asp:ControlParameter ControlID="RPARGrid" Name="RPREN" PropertyName="SelectedValue"
Type="String" /> Type="String" />
</SelectParameters> </SelectParameters>
</asp:SqlDataSource> </asp:ObjectDataSource>
<asp:ObjectDataSource ID="dsBPSE" runat="server" OldValuesParameterFormatString="original_{0}" <asp:ObjectDataSource ID="dsBPSE" runat="server" OldValuesParameterFormatString="original_{0}"
OnSelecting="dsBPSE_Selecting" SelectMethod="Select片語By類別" OnSelecting="dsBPSE_Selecting" SelectMethod="Select片語By類別"
+6 -14
View File
@@ -49,7 +49,6 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
FLOOR(RPTC5 / 60) AS RPTC5, RPTC5 - FLOOR(RPTC5 / 60) * 60 AS RPTM5"; FLOOR(RPTC5 / 60) AS RPTC5, RPTC5 - FLOOR(RPTC5 / 60) * 60 AS RPTM5";
private string from = " FROM RPAR "; private string from = " FROM RPAR ";
private string where = " WHERE 1=1 "; private string where = " WHERE 1=1 ";
private string order = " ORDER BY RPRDT DESC";
private FormView RPARForm; private FormView RPARForm;
private Panel RPARPanel; private Panel RPARPanel;
protected string rparType; protected string rparType;
@@ -136,9 +135,7 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
{ {
base.OnInit(e); base.OnInit(e);
dsRPARForm.ConnectionString = ConnectionString; dsRPARForm.ConnectionString = ConnectionString;
dsRPARGrid.ConnectionString = ConnectionString;
dsRPAR_RPTYP.ConnectionString = ConnectionString; dsRPAR_RPTYP.ConnectionString = ConnectionString;
dsRPAB.ConnectionString = ConnectionString;
bpsnDao = new BpsnDAC(Query); bpsnDao = new BpsnDAC(Query);
rparDao = new RparDAC(Query); rparDao = new RparDAC(Query);
@@ -354,19 +351,14 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
RPARPanel.Visible = true; RPARPanel.Visible = true;
} }
StringBuilder sql = new StringBuilder();
sql.Append(select);
sql.Append(from);
sql.Append(where);
dsRPARGrid.SelectParameters.Clear();
DateTime RPRDT1, RPRDT2; DateTime RPRDT1, RPRDT2;
CheckDate(_RPRDT1, out RPRDT1); CheckDate(_RPRDT1, out RPRDT1);
CheckDate(_RPRDT2, out RPRDT2); CheckDate(_RPRDT2, out RPRDT2);
AddSearch(sql, dsRPARGrid, "RPRDT", RPRDT1, RPRDT2, true); dsRPARGrid.SelectParameters["RPNUM_FIXED"].DefaultValue = UserId;
sql.Append(order); dsRPARGrid.SelectParameters["RPRDT1"].DefaultValue = RPRDT1.Ticks > 0 ? RPRDT1.ToString("yyyy-MM-dd") : "";
dsRPARGrid.SelectCommand = sql.ToString(); dsRPARGrid.SelectParameters["RPRDT2"].DefaultValue = RPRDT2.Ticks > 0 ? RPRDT2.ToString("yyyy-MM-dd") : "";
dsRPARGrid.SelectParameters["rparType"].DefaultValue = rparType;
dsRPARForm.SelectCommand = select + from + " WHERE RPREN=@RPREN "; dsRPARForm.SelectCommand = select + from + " WHERE RPREN=@RPREN ";
@@ -959,9 +951,9 @@ public partial class forms_customer_fmRpar : Wellan.Web.UI.WUserControlBase
gvRPAD.DataBind(); gvRPAD.DataBind();
} }
protected void dsRPARGrid_Selected(object sender, SqlDataSourceStatusEventArgs e) protected void dsRPARGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{ {
if (e.AffectedRows == 0) if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{ {
switch (MultiView1.ActiveViewIndex) switch (MultiView1.ActiveViewIndex)
{ {