feat: fmBpjb GridView 改用 ObjectDataSource

- 新增 BpjbDAC(SelectPage/SelectCount)

- dsBPJBGrid 改 ObjectDataSource;Search/Selected 調整
This commit is contained in:
2026-09-10 10:40:52 +08:00
parent 59d410d5cb
commit de623b4f42
4 changed files with 102 additions and 24 deletions
+2 -1
View File
@@ -22,7 +22,7 @@
| 4 | forms/customer/fmBpabBig.ascx | gvBPAB | dsBPABGrid | BPAB | 無→BpabDAC | **完成** | | 4 | forms/customer/fmBpabBig.ascx | gvBPAB | dsBPABGrid | BPAB | 無→BpabDAC | **完成** |
| 5 | forms/customer/fmBpabSmall.ascx | gvBPAB | dsBPABGrid | BPAB | 無→BpabDAC | **完成** | | 5 | forms/customer/fmBpabSmall.ascx | gvBPAB | dsBPABGrid | BPAB | 無→BpabDAC | **完成** |
| 6 | forms/customer/fmBpja.ascx | gvBPJA | dsBPJAGrid | BPJA | 無→BpjaDAC | **完成** | | 6 | forms/customer/fmBpja.ascx | gvBPJA | dsBPJAGrid | BPJA | 無→BpjaDAC | **完成** |
| 7 | forms/customer/fmBpjb.ascx | gvBPJB | dsBPJBGrid | BPJB | 無 | 待辦 | | 7 | forms/customer/fmBpjb.ascx | gvBPJB | dsBPJBGrid | BPJB | 無→BpjbDAC | **完成** |
| 8 | forms/customer/fmBprj.ascx | gvBPRJ | dsBPRJGrid | BPRJ | BprjDAC | 待辦 | | 8 | forms/customer/fmBprj.ascx | gvBPRJ | dsBPRJGrid | BPRJ | BprjDAC | 待辦 |
| 9 | forms/customer/fmBprm.ascx | gvBPRM | dsBPRMGrid | BPRM | BprmDAC | 待辦 | | 9 | forms/customer/fmBprm.ascx | gvBPRM | dsBPRMGrid | BPRM | BprmDAC | 待辦 |
| 10 | forms/customer/fmRasn.ascx | gvRASN_RAENO | dsRASN_RAENO1 | RASN+BPSNView | RasnDAC | 待辦 | | 10 | forms/customer/fmRasn.ascx | gvRASN_RAENO | dsRASN_RAENO1 | RASN+BPSNView | RasnDAC | 待辦 |
@@ -146,3 +146,4 @@
| 2026-09-10 | 轉換 fmBpaaBPAA):BpaaDAC 新增 SelectPage/SelectCount/SelectBPAAIndexdsBPAAGrid 改 ObjectDataSource;編譯通過 | | 2026-09-10 | 轉換 fmBpaaBPAA):BpaaDAC 新增 SelectPage/SelectCount/SelectBPAAIndexdsBPAAGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBpab / fmBpabBig / fmBpabSmallBPAB):新增 BpabDACSelectPage/SelectCountmode 區分科目/大類/小類);三檔 dsBPABGrid 改 ObjectDataSource;編譯通過 | | 2026-09-10 | 轉換 fmBpab / fmBpabBig / fmBpabSmallBPAB):新增 BpabDACSelectPage/SelectCountmode 區分科目/大類/小類);三檔 dsBPABGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBpjaBPJA):新增 BpjaDACSelectPage/SelectCount/SelectBPJAIndex);dsBPJAGrid 改 ObjectDataSource;編譯通過 | | 2026-09-10 | 轉換 fmBpjaBPJA):新增 BpjaDACSelectPage/SelectCount/SelectBPJAIndex);dsBPJAGrid 改 ObjectDataSource;編譯通過 |
| 2026-09-10 | 轉換 fmBpjbBPJB):新增 BpjbDACSelectPage/SelectCount);dsBPJBGrid 改 ObjectDataSource;編譯通過 |
+87
View File
@@ -0,0 +1,87 @@
using System;
using System.Data;
using System.Data.Common;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
/// <summary>
/// 職稱等級設定的資料處理類別
/// </summary>
[DataObject(true)]
public class BpjbDAC : Wellan.Data.WDAC
{
public BpjbDAC()
{
}
public BpjbDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public BpjbDAC(WQuery query)
{
this._query = query;
}
/// <summary>
/// 職稱等級設定 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPYN, string BPJNO)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN, BPJNO);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY BPPYN, BPJNO, BPCNO) AS ROWID
FROM BPJB 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 BPPYN, string BPJNO)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPYN, BPJNO);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPJB WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 組出職稱等級設定 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPYN, string BPJNO)
{
if (!string.IsNullOrEmpty(BPPYN))
{
sb.Append(" AND BPPYN LIKE @BPPYN1 ");
cmd.Parameters.Add(Query.NewParameter("BPPYN1", BPPYN + "%"));
}
if (!string.IsNullOrEmpty(BPJNO))
{
sb.Append(" AND BPJNO LIKE @BPJNO1 ");
cmd.Parameters.Add(Query.NewParameter("BPJNO1", BPJNO + "%"));
}
}
}
+9 -7
View File
@@ -9,13 +9,15 @@
<asp:MultiView ID="MultiView1" <asp:MultiView ID="MultiView1"
runat="server" ActiveViewIndex="0"> runat="server" ActiveViewIndex="0">
<asp:View ID="EditView" runat="server"> <asp:View ID="EditView" runat="server">
<asp:SqlDataSource ID="dsBPJBGrid" <asp:ObjectDataSource ID="dsBPJBGrid"
runat="server" ConflictDetection="CompareAllValues" runat="server" TypeName="BpjbDAC"
SelectCommand="SELECT * FROM BPJB WHERE (1 = 0)" SelectMethod="SelectPage" SelectCountMethod="SelectCount"
ConnectionString="Data Source=(local);Initial Catalog=THINKYU_WEB;Persist Security Info=True;User ID=sa" EnablePaging="true" OnSelected="dsBPJBGrid_Selected">
ProviderName="System.Data.SqlClient" <SelectParameters>
OnSelected="dsBPJBGrid_Selected"> <asp:Parameter Name="BPPYN" Type="String" />
</asp:SqlDataSource> <asp:Parameter Name="BPJNO" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:SqlDataSource ID="dsBPJBForm" <asp:SqlDataSource ID="dsBPJBForm"
runat="server" InsertCommand="INSERT INTO BPJB runat="server" InsertCommand="INSERT INTO BPJB
(BPPYN, BPJNO, BPCNO, BPCME, BPSRM, BPSRD, BPP01, BPP02, BPP03, BPP04, BPP05, APPNO, TRDAT, TRMOD, TRUSR) (BPPYN, BPJNO, BPCNO, BPCME, BPSRM, BPSRD, BPP01, BPP02, BPP03, BPP04, BPP05, APPNO, TRDAT, TRMOD, TRUSR)
+4 -16
View File
@@ -24,10 +24,6 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
protected string _BPPYN = ""; protected string _BPPYN = "";
protected string _BPJNO = ""; protected string _BPJNO = "";
protected string _BPJME = ""; protected string _BPJME = "";
private string select = "SELECT * ";
private string from = " FROM BPJB ";
private string where = " WHERE 1=1 ";
private string order = " ORDER BY BPPYN, BPJNO, BPCNO";
protected void Page_Load(object sender, EventArgs e) protected void Page_Load(object sender, EventArgs e)
{ {
@@ -39,7 +35,6 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
{ {
base.OnInit(e); base.OnInit(e);
dsBPJBForm.ConnectionString = ConnectionString; dsBPJBForm.ConnectionString = ConnectionString;
dsBPJBGrid.ConnectionString = ConnectionString;
_BPNUM = GetStringParam("BPNUM"); _BPNUM = GetStringParam("BPNUM");
_BPPYN = GetStringParam("BPPYN"); _BPPYN = GetStringParam("BPPYN");
@@ -54,15 +49,8 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
// 查詢動作 // 查詢動作
private new void Search() private new void Search()
{ {
StringBuilder sql = new StringBuilder(); dsBPJBGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
sql.Append(select); dsBPJBGrid.SelectParameters["BPJNO"].DefaultValue = _BPJNO;
sql.Append(from);
sql.Append(where);
dsBPJBGrid.SelectParameters.Clear();
AddSearch(sql, dsBPJBGrid, "BPPYN", _BPPYN, "", true);
AddSearch(sql, dsBPJBGrid, "BPJNO", _BPJNO, "", true);
sql.Append(order);
dsBPJBGrid.SelectCommand = sql.ToString();
} }
private new void CalcFields(SqlDataSourceCommandEventArgs e) private new void CalcFields(SqlDataSourceCommandEventArgs e)
@@ -115,9 +103,9 @@ public partial class forms_customer_fmBpjb : Wellan.Web.UI.WUserControlBase
gvBPJB.DataBind(); gvBPJB.DataBind();
} }
protected void dsBPJBGrid_Selected(object sender, SqlDataSourceStatusEventArgs e) protected void dsBPJBGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{ {
if (e.AffectedRows == 0) if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{ {
fvBPJB.ChangeMode(FormViewMode.Insert); fvBPJB.ChangeMode(FormViewMode.Insert);
fvBPJB_ModeChanged(sender, e); fvBPJB_ModeChanged(sender, e);