Files
thinkyu/Web/forms/worker/fmBpsl.ascx.cs
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

419 lines
15 KiB
C#

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 Wellan.Data;
using Wellan.Common;
using System.Text;
using System.Data.Common;
/// <summary>
/// 非專案人員薪資資料處理
/// </summary>
public partial class forms_worker_fmBpsl : Wellan.Web.UI.WUserControlBase
{
protected string _BPENO = "";
protected string _BPNME = "";
protected int _BPITM = 0;
protected string _Current_BPENO = "";
protected int _Current_BPITM = 0;
private DbCommand cmdCheckDuplicate;
protected string tableName = "";
protected void Page_Load(object sender, EventArgs e)
{
_BPENO = ViewState["BPENO"] != null ? ViewState["BPENO"].ToString() : "";
_BPNME = ViewState["BPNME"] != null ? ViewState["BPNME"].ToString() : "";
_BPITM = ViewState["BPITM"] != null ? Convert.ToInt32(ViewState["BPITM"]) : 0;
_Current_BPENO = ViewState["Current_BPENO"] != null ? ViewState["Current_BPENO"].ToString() : "";
_Current_BPITM = ViewState["Current_BPITM"] != null ? Convert.ToInt32(ViewState["Current_BPITM"]) : 0;
tableName = ViewState["tableName"] != null ? ViewState["tableName"].ToString() : "";
//if (IsPostBack)
// gvBPSL.DataBind();
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
cmdCheckDuplicate = Query.NewCommand(@"SELECT COUNT(1) FROM BPSL WHERE BPENO=@BPENO");
cmdCheckDuplicate.Parameters.Add(Query.NewParameter("BPENO", DbType.String));
GetGridViewRowColor(gvBPSL);
ShowData();
}
private void ShowData()
{
switch (tableName)
{
case "":
case "BPSL":
MultiView1.ActiveViewIndex = 1;
RegisterLookupEvent(this, "btnBPSL_BPENO_WQRY", "txtBPSL_BPENO", "txtBPSL_BPENO,lbBPSL_BPENOX", "BPSN");
SetClientFocus(txtBPSL_BPENO);
Search();
gvBPSL.DataSourceID = "dsBPSLGrid";
fvBPSL.DataSourceID = "dsBPSLForm";
break;
case "RPSL":
SearchB();
gvBPSL.DataSourceID = "dsRPSLGrid";
fvBPSL.DataSourceID = "dsRPSLForm";
break;
}
}
// 查詢按鈕
protected void btnSearch_Click(object sender, EventArgs e)
{
_BPENO = txtBPSL_BPENO.Text;
_BPNME = txtBPSL_BPNME.Text;
if (_BPENO.Length == 0 &&
_BPNME.Length == 0)
{
cvMessage.ErrorMessage = GetString("NOSRHCOND");
cvMessage.IsValid = false;
}
else
{
MultiView1.ActiveViewIndex = 1;
Search();
gvBPSL.PageIndex = 0;
gvBPSL.SelectedIndex = 0;
gvBPSL.DataBind();
// 查詢有資料時,才將查詢條件紀錄在 ViewState 中
if (gvBPSL.Rows.Count > 0)
{
ViewState["BPENO"] = _BPENO;
ViewState["BPNME"] = _BPNME;
ViewState["tableName"] = "";
}
}
}
// 取消查詢按鈕
protected void btnCancel_Click(object sender, EventArgs e)
{
Search();
gvBPSL.DataBind();
MultiView1.ActiveViewIndex = 1;
}
// 查詢動作
private new void Search()
{
dsBPSLGrid.SelectParameters["BPENO"].DefaultValue = _BPENO;
dsBPSLGrid.SelectParameters["BPNME"].DefaultValue = _BPNME;
}
// 異動查詢動作
private void SearchB()
{
dsRPSLGrid.SelectParameters["BPENO"].DefaultValue = _Current_BPENO;
}
// 檢查員工編號是否存在
protected void cvBPENO_ServerValidate(object source, ServerValidateEventArgs args)
{
BPSN_DAC bpsn = new BPSN_DAC(WConfig.GetConnectionConfig(), WConfig.GetConnectionConfigName());
args.IsValid = args.Value != "" && bpsn.IsExist(args.Value, true);
}
// 驗證月薪與時薪
protected void cvNumber1_ServerValidate(object source, ServerValidateEventArgs args)
{
int i;
args.IsValid = args.Value != "" && Int32.TryParse(args.Value, out i) && i > 0;
}
// 驗證各項津貼
protected void cvNumber2_ServerValidate(object source, ServerValidateEventArgs args)
{
int i;
args.IsValid = args.Value != "" && Int32.TryParse(args.Value, out i) && i >= 0;
}
protected void fvBPSL_DataBound(object sender, EventArgs e)
{
switch (fvBPSL.CurrentMode)
{
case FormViewMode.Insert:
RegisterLookupEvent(fvBPSL, "btnBPSL_BPENO_WQRY", "txtBPSL_BPENO", "txtBPSL_BPENO,lbBPSL_BPENOX", "BPSN");
switch (tableName)
{
case "BPSL":
(fvBPSL.FindControl("txtBPSL_BPSRM") as ITextControl).Text = "0";
(fvBPSL.FindControl("txtBPSL_BPSRD") as ITextControl).Text = "0";
(fvBPSL.FindControl("txtBPSL_BPP01") as ITextControl).Text = "0";
(fvBPSL.FindControl("txtBPSL_BPP02") as ITextControl).Text = "1800";
(fvBPSL.FindControl("txtBPSL_BPP03") as ITextControl).Text = "0";
(fvBPSL.FindControl("txtBPSL_BPP04") as ITextControl).Text = "0";
(fvBPSL.FindControl("txtBPSL_BPP05") as ITextControl).Text = "0";
SetClientFocus(fvBPSL, "txtBPSL_BPENO");
fvBPSL.FindControl("lbBPSL_BPBDTLabel").Visible = false;
fvBPSL.FindControl("btnBPSL_BPBDT_DATE").Visible = false;
fvBPSL.FindControl("txtBPSL_BPBDT").Visible = false;
(fvBPSL.FindControl("rfvBPBDT") as RequiredFieldValidator).Enabled = false;
break;
case "RPSL":
// 取得目前資料,複製進畫面的控制項
RegisterCalendarEvent(fvBPSL, "btnBPSL_BPBDT_DATE", "txtBPSL_BPBDT");
BpslDAC bpsl = new BpslDAC();
DataTable bpslData = bpsl.SelectOne(_Current_BPENO, _Current_BPITM);
if (bpslData.Rows.Count > 0)
{
(fvBPSL.FindControl("txtBPSL_BPENO") as ITextControl).Text = bpslData.Rows[0]["BPENO"].ToString();
(fvBPSL.FindControl("lbBPSL_BPENOX") as ITextControl).Text = GetLookup("BPSN", bpslData.Rows[0]["BPENO"].ToString(), "BPNME");
(fvBPSL.FindControl("txtBPSL_BPENO") as TextBox).Attributes.Add("readonly", "readonly");
(fvBPSL.FindControl("txtBPSL_BPSRM") as ITextControl).Text = bpslData.Rows[0]["BPSRM"].ToString();
(fvBPSL.FindControl("txtBPSL_BPSRD") as ITextControl).Text = bpslData.Rows[0]["BPSRD"].ToString();
(fvBPSL.FindControl("txtBPSL_BPP01") as ITextControl).Text = bpslData.Rows[0]["BPP01"].ToString();
(fvBPSL.FindControl("txtBPSL_BPP02") as ITextControl).Text = bpslData.Rows[0]["BPP02"].ToString();
(fvBPSL.FindControl("txtBPSL_BPP03") as ITextControl).Text = bpslData.Rows[0]["BPP03"].ToString();
(fvBPSL.FindControl("txtBPSL_BPP04") as ITextControl).Text = bpslData.Rows[0]["BPP04"].ToString();
(fvBPSL.FindControl("txtBPSL_BPP05") as ITextControl).Text = bpslData.Rows[0]["BPP05"].ToString();
}
break;
}
break;
case FormViewMode.Edit:
if (_Current_BPITM == 0)
{
fvBPSL.FindControl("lbBPSL_BPBDTLabel").Visible = false;
fvBPSL.FindControl("btnBPSL_BPBDT_DATE").Visible = false;
fvBPSL.FindControl("txtBPSL_BPBDT").Visible = false;
(fvBPSL.FindControl("rfvBPBDT") as RequiredFieldValidator).Enabled = false;
}
else
RegisterCalendarEvent(fvBPSL, "btnBPSL_BPBDT_DATE", "txtBPSL_BPBDT");
RegisterLookupEvent(fvBPSL, "btnBPSL_BPENO_WQRY", "txtBPSL_BPENO", "txtBPSL_BPENO,lbBPSL_BPENOX", "BPSN");
SetClientFocus(fvBPSL, "txtBPSL_BPENO");
break;
case FormViewMode.ReadOnly:
break;
}
}
protected void fvBPSL_ItemCommand(object sender, FormViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "New":
tableName = e.CommandArgument.ToString();
ViewState["tableName"] = tableName;
break;
case "Search":
MultiView1.ActiveViewIndex = 0;
SetClientFocus(txtBPSL_BPENO);
break;
case "Cancel":
tableName = "BPSL";
ViewState["tableName"] = tableName;
Search();
fvBPSL.ChangeMode(FormViewMode.ReadOnly);
fvBPSL_ModeChanged(sender, e);
break;
case "BPSL":
tableName = "BPSL";
ViewState["tableName"] = tableName;
ShowData();
break;
case "RPSLSearch":
tableName = "RPSL";
ViewState["tableName"] = tableName;
ShowData();
break;
}
}
protected void fvBPSL_ItemDeleted(object sender, FormViewDeletedEventArgs e)
{
Search();
gvBPSL.DataBind();
if (gvBPSL.SelectedIndex > gvBPSL.Rows.Count - 1)
{
gvBPSL.SelectedIndex = gvBPSL.Rows.Count - 1;
gvBPSL.DataBind();
}
fvBPSL.DataBind();
}
protected void fvBPSL_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
tableName = "BPSL";
ViewState["tableName"] = tableName;
Search();
}
protected void fvBPSL_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
{
Search();
}
protected void fvBPSL_ModeChanged(object sender, EventArgs e)
{
if (fvBPSL.CurrentMode == FormViewMode.ReadOnly)
{
gvBPSL.Visible = true;
gvBPSL.DataBind();
if (gvBPSL.Rows.Count > 0 && gvBPSL.SelectedIndex == -1)
{
gvBPSL.SelectedIndex = 0;
}
if (OldMode == FormViewMode.Insert && gvBPSL.Rows.Count > 0)
{
gvBPSL.PageIndex = gvBPSL.PageCount - 1;
gvBPSL.DataBind();
gvBPSL.SelectedIndex = gvBPSL.Rows.Count - 1;
}
fvBPSL.DataBind();
}
else
{
gvBPSL.Visible = false;
}
}
protected void fvBPSL_ModeChanging(object sender, FormViewModeEventArgs e)
{
OldMode = (sender as FormView).CurrentMode;
}
protected void gvBPSL_PageIndexChanged(object sender, EventArgs e)
{
Search();
gvBPSL.SelectedIndex = 0;
gvBPSL.DataBind();
}
private void UpdateCurrentKey()
{
_Current_BPENO = gvBPSL.SelectedDataKey != null ? gvBPSL.SelectedDataKey["BPENO"].ToString() : "";
_Current_BPITM = gvBPSL.SelectedDataKey != null ? Convert.ToInt32(gvBPSL.SelectedDataKey["BPITM"]) : 0;
ViewState["Current_BPENO"] = _Current_BPENO;
ViewState["Current_BPITM"] = _Current_BPITM;
}
protected void gvBPSL_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in gvBPSL.Rows)
SetGridViewMouseBehavier(gvBPSL, row);
UpdateCurrentKey();
}
protected void gvBPSL_DataBound(object sender, EventArgs e)
{
GridView_DataBound(sender, e);
if (gvBPSL.SelectedIndex == -1)
gvBPSL.SelectedIndex = 0;
if (gvBPSL.SelectedIndex >= gvBPSL.Rows.Count)
gvBPSL.SelectedIndex = gvBPSL.Rows.Count - 1;
UpdateCurrentKey();
fvBPSL.DataBind();
}
protected void gvBPSL_RowDataBound(object sender, GridViewRowEventArgs e)
{
SetGridViewMouseBehavier(gvBPSL, e.Row);
//GridView_RowDataBound_Shrink_ViewState(sender, e);
}
protected void dsBPSLGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if ((e.ReturnValue as DataTable).Rows.Count == 0)
{
MultiView1.ActiveViewIndex = 0;
cvMessage.ErrorMessage = GetString("NODATA");
cvMessage.IsValid = false;
btnInsert.Enabled = true;
}
}
private bool CheckBPENODuplicate(string bpeno)
{
cmdCheckDuplicate.Parameters["BPENO"].Value = bpeno;
object o = Query.ExecuteScalar(cmdCheckDuplicate);
return (o != null && o != DBNull.Value && Convert.ToInt32(o) > 0);
}
protected new bool CheckInput(System.Collections.Specialized.IOrderedDictionary values)
{
cvMessage.ErrorMessage = "";
cvMessage.IsValid = true;
bool result = true;
if (values["BPBDT"].ToString() != "")
values["BPBDT"] = CheckDate(values["BPBDT"], "請輸入正確的生效日期", ref result, cvMessage);
ProcessCustomValidatorMessage(cvMessage);
return result;
}
protected void fvBPSL_ItemInserting(object sender, FormViewInsertEventArgs e)
{
cvMessage.ErrorMessage = "";
cvMessage.IsValid = true;
// 檢查員工編號是否重複
if (tableName == "BPSL" && CheckBPENODuplicate(e.Values["BPENO"].ToString()))
{
e.Cancel = true;
cvMessage.ErrorMessage = "員工編號重複,請重新輸入";
cvMessage.IsValid = false;
}
if (tableName == "RPSL")
{
e.Values["BPITM"] = 1;
}
e.Cancel = !CheckInput(e.Values);
}
protected void fvBPSL_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
cvMessage.ErrorMessage = "";
cvMessage.IsValid = true;
// 當員工編號修改時,檢查員工編號是否重複
if (tableName == "BPSL" && e.Keys["BPENO"].ToString() != e.NewValues["BPENO"].ToString())
{
if (CheckBPENODuplicate(e.NewValues["BPENO"].ToString()))
{
e.Cancel = true;
cvMessage.ErrorMessage = "員工編號重複,請重新輸入";
cvMessage.IsValid = false;
}
}
e.Cancel = !CheckInput(e.NewValues);
}
protected void btnInsert_Click(object sender, EventArgs e)
{
MultiView1.ActiveViewIndex = 1;
tableName = "BPSL";
fvBPSL.ChangeMode(FormViewMode.Insert);
//fvBPSL_ModeChanged(sender, e);
fvBPSL_DataBound(sender, e);
}
}