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; /// /// 非專案人員薪資資料處理 /// 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); } }