Files
thinkyu/Web/App_Code/DAC/BprmDAC.cs
T
sryang dd8a26206f feat: fmBprm GridView 改用 ObjectDataSource
- BprmDAC 新增 SelectPage/SelectCount

- dsBPRMGrid 改 ObjectDataSource;dsBPRM_Selected 拆分為 grid/form
2026-09-10 10:43:56 +08:00

123 lines
3.8 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Common;
using System.ComponentModel;
using System.Text;
using Wellan.Data;
/// <summary>
/// 用來取得專案處理人員資料的類別
/// </summary>
[DataObject(true)]
public class BprmDAC : Wellan.Data.WDAC
{
public BprmDAC()
{
}
public BprmDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public BprmDAC(WQuery query)
{
this._query = query;
}
/// <summary>
/// 取得某使用者是否有處理某專案的權限
/// </summary>
/// <param name="bppyn">年度專案編號</param>
/// <param name="bpeno"></param>
/// <returns></returns>
public bool GetRight(string bppyn, string bpeno)
{
DbCommand cmd = Query.NewCommand(
//@"SELECT COUNT(1) FROM BPRM A
// INNER JOIN BPAA B ON A.BPPNM=B.BPPNM
// WHERE B.BPPYN=@BPPYN AND BPENO=@BPENO");
@"SELECT COUNT(1) FROM BPRM
WHERE BPPNM=@BPPYN AND BPENO=@BPENO");
cmd.Parameters.Add(Query.NewParameter("BPPYN", bppyn.Length > 3 ? bppyn.Substring(3) : bppyn));
cmd.Parameters.Add(Query.NewParameter("BPENO", bpeno));
int i;
ExecuteScalar(cmd, out i);
return i > 0;
}
public DataTable SelectBy年度接單編號(string BPPYN)
{
DbCommand cmd = Query.NewCommand(
@"SELECT A.BPENO, C.BPNME, C.BPEML
FROM BPRM A
JOIN BPAA B ON A.BPPNM = B.BPPNM
JOIN BPSNView C ON A.BPENO = C.BPENO
WHERE B.BPPYN = @BPPYN");
cmd.Parameters.Add(Query.NewParameter("BPPYN", BPPYN));
return Query.Select(cmd);
}
/// <summary>
/// 專案處理人員 Grid 分頁查詢
/// </summary>
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(int startRowIndex, int maximumRows, string BPPNM)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPNM);
cmd.CommandText = String.Format(
@"SELECT * FROM
(
SELECT *, ROW_NUMBER() OVER (ORDER BY BPENO) AS ROWID
FROM BPRM 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 BPPNM)
{
DbCommand cmd = Query.NewCommand();
StringBuilder filter = new StringBuilder();
BuildFilter(filter, cmd, BPPNM);
cmd.CommandText = String.Format("SELECT COUNT(*) FROM BPRM WHERE 1=1 {0}", filter.ToString());
return WDAC.GetInt32Value(Query.ExecuteScalar(cmd));
}
/// <summary>
/// 組出專案處理人員 Grid 的查詢條件 (與舊 AddSearch 行為一致)
/// </summary>
private void BuildFilter(StringBuilder sb, DbCommand cmd, string BPPNM)
{
if (!string.IsNullOrEmpty(BPPNM))
{
sb.Append(" AND BPPNM LIKE @BPPNM1 ");
cmd.Parameters.Add(Query.NewParameter("BPPNM1", BPPNM + "%"));
}
}
}