419 lines
15 KiB
C#
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);
|
|
}
|
|
}
|