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 System.Data.Common; using Wellan.Data; using Wellan.Common; using System.Text; using System.IO; using System.Drawing; /// /// 專案年度接單處理 /// public partial class forms_customer_fmBpaa : Wellan.Web.UI.WUserControlBase { protected string _BPNUM = ""; protected string _BPPNM = ""; private string _BPYER = ""; private string _BPPYN = ""; private string _BPPYM = ""; //private int _OLD_BPYER = 0; //private string _OLD_BPPYN = ""; protected void Page_Load(object sender, EventArgs e) { //if (IsPostBack) // gvBPAA.DataBind(); } protected override void OnInit(EventArgs e) { base.OnInit(e); dsBPAAForm.ConnectionString = ConnectionString; //_BPPNM = ViewState["BPPNM"] != null ? ViewState["BPPNM"].ToString() : ""; //_BPYER = ViewState["BPYER"] != null ? ViewState["BPYER"].ToString() : ""; //_BPPYN = ViewState["BPPYN"] != null ? ViewState["BPPYN"].ToString() : ""; //_BPPYM = ViewState["BPPYM"] != null ? ViewState["BPPYM"].ToString() : ""; if (_BPNUM == "") _BPNUM = GetStringParam("BPNUM"); if (_BPPNM == "") _BPPNM = GetStringParam("BPPNM"); GetGridViewRowColor(gvBPAA); switch (MultiView1.ActiveViewIndex) { case 0: { SetClientFocus(txtBPNUM); break; } case 1: { Search(); break; } } } // 查詢按鈕 protected void btnSearch_Click(object sender, EventArgs e) { ViewState["BPPNM"] = txtBPPNM.Text; ViewState["BPYER"] = txtBPYER.Text; ViewState["BPPYN"] = txtBPPYN.Text; ViewState["BPPYM"] = txtBPPYM.Text; _BPPNM = txtBPPNM.Text; _BPYER = txtBPYER.Text; _BPPYN = txtBPPYN.Text; _BPPYM = txtBPPYM.Text; if (_BPPNM.Length == 0 && _BPYER.Length == 0 && _BPPYN.Length == 0 && _BPPYM.Length == 0) { lbMessage.Text = GetString("NOSRHCOND"); lbMessage.Visible = true; } else { MultiView1.ActiveViewIndex = 1; Search(); gvBPAA.PageIndex = 0; gvBPAA.SelectedIndex = 0; gvBPAA.DataBind(); } } // 取消查詢按鈕 protected void btnCancel_Click(object sender, EventArgs e) { MultiView1.ActiveViewIndex = 1; } // 查詢動作 private new void Search() { dsBPAAGrid.SelectParameters["BPPNM"].DefaultValue = _BPPNM; dsBPAAGrid.SelectParameters["BPYER"].DefaultValue = _BPYER; dsBPAAGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN; dsBPAAGrid.SelectParameters["BPPYM"].DefaultValue = _BPPYM; // 返回時,回到之前選擇的那一筆 if (ParamList != null && ParamList.ContainsKey("BPPNM") && ParamList.ContainsKey("BPYER")) { int rowIndex = new BpaaDAC(Query).SelectBPAAIndex( WDAC.GetStringValue(ParamList["BPPNM"]), WDAC.GetStringValue(ParamList["BPYER"]), _BPPNM, _BPYER, _BPPYN, _BPPYM); if (rowIndex >= 0) { gvBPAA.PageIndex = rowIndex / gvBPAA.PageSize; gvBPAA.SelectedIndex = rowIndex - gvBPAA.PageIndex * gvBPAA.PageSize; } ParamList.Remove("BPYER"); } } private void CalcFields(System.Collections.Specialized.IOrderedDictionary values) { Decimal bpbgt; if (Decimal.TryParse(values["BPBGT"].ToString(), out bpbgt)) values["BPBGT"] = bpbgt; else values["BPBGT"] = 0; } protected void dsBPAAForm_Inserting(object sender, SqlDataSourceCommandEventArgs e) { } protected void dsBPAAForm_Updating(object sender, SqlDataSourceCommandEventArgs e) { } protected void dsBPAAForm_Updated(object sender, SqlDataSourceStatusEventArgs e) { } protected void gvBPAA_DataBound(object sender, EventArgs e) { GridView_DataBound(sender, e); if (gvBPAA.Rows.Count > 0) { if (gvBPAA.SelectedIndex == -1) gvBPAA.SelectedIndex = 0; fvBPAA.DataBind(); } } protected void gvBPAA_PageIndexChanged(object sender, EventArgs e) { Search(); gvBPAA.SelectedIndex = 0; gvBPAA.DataBind(); } protected void dsBPAAGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e) { if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0) { fvBPAA.ChangeMode(FormViewMode.Insert); fvBPAA_ModeChanged(sender, e); } } protected void fvBPAA_ItemCommand(object sender, FormViewCommandEventArgs e) { switch (e.CommandName) { case "Insert": break; case "Edit": break; case "Cancel": Search(); fvBPAA.ChangeMode(FormViewMode.ReadOnly); fvBPAA_ModeChanged(sender, e); if (gvBPAA.Rows.Count == 0) DoAfterCommand("BPRJ"); break; case "Return": DoAfterCommand("BPRJ"); break; case "Detail": fvBPAA.DataBind(); if (fvBPAA.DataItem != null) { DataRowView rv = fvBPAA.DataItem as DataRowView; ParamList["BPNUM"] = _BPNUM; ParamList["BPPNM"] = rv["BPPNM"]; ParamList["BPPYN"] = rv["BPPYN"]; ParamList["BPYER"] = rv["BPYER"].ToString(); DoAfterCommand("BPAB"); } break; case "BPJA": fvBPAA.DataBind(); if (fvBPAA.DataItem != null) { DataRowView rv = fvBPAA.DataItem as DataRowView; //ParamList.Clear(); ParamList["BPNUM"] = _BPNUM; ParamList["BPPNM"] = rv["BPPNM"]; ParamList["BPPYN"] = rv["BPPYN"]; ParamList["BPYER"] = rv["BPYER"].ToString(); DoAfterCommand("BPJA"); } break; case "RASN": fvBPAA.DataBind(); if (fvBPAA.DataItem != null) { DataRowView rv = fvBPAA.DataItem as DataRowView; //ParamList.Clear(); ParamList["BPNUM"] = _BPNUM; ParamList["BPPNM"] = rv["BPPNM"]; ParamList["BPPYN"] = rv["BPPYN"]; ParamList["BPYER"] = rv["BPYER"].ToString(); //ParamList.Add("RACNM", _BPNUM); //ParamList.Add("RASNM", rv["BPPYN"]); DoAfterCommand("RASN"); } break; case "SubjectAssign": fvBPAA.DataBind(); if (fvBPAA.DataItem != null) { DataRowView rv = fvBPAA.DataItem as DataRowView; //ParamList.Clear(); ParamList["BPNUM"] = _BPNUM; ParamList["BPPNM"] = rv["BPPNM"]; ParamList["BPPYN"] = rv["BPPYN"]; ParamList["BPYER"] = rv["BPYER"].ToString(); DoAfterCommand("BPAASUB"); } break; } } protected void fvBPAA_ItemDeleted(object sender, FormViewDeletedEventArgs e) { Search(); gvBPAA.DataBind(); if (gvBPAA.SelectedIndex > gvBPAA.Rows.Count - 1) { gvBPAA.SelectedIndex = gvBPAA.Rows.Count - 1; gvBPAA.DataBind(); } fvBPAA.DataBind(); } protected void fvBPAA_ItemInserted(object sender, FormViewInsertedEventArgs e) { Search(); } protected void fvBPAA_ItemUpdated(object sender, FormViewUpdatedEventArgs e) { Search(); } protected void fvBPAA_ModeChanged(object sender, EventArgs e) { switch (fvBPAA.CurrentMode) { case FormViewMode.ReadOnly: gvBPAA.Visible = true; gvBPAA.DataBind(); if (gvBPAA.Rows.Count > 0) { if (gvBPAA.SelectedIndex == -1) { gvBPAA.SelectedIndex = 0; } if (OldMode == FormViewMode.Insert) { gvBPAA.PageIndex = gvBPAA.PageCount - 1; gvBPAA.DataBind(); gvBPAA.SelectedIndex = gvBPAA.Rows.Count - 1; } gvBPAA.DataBind(); fvBPAA.DataBind(); } break; case FormViewMode.Edit: gvBPAA.Visible = false; break; case FormViewMode.Insert: gvBPAA.Visible = false; break; } } protected void fvBPAA_ModeChanging(object sender, FormViewModeEventArgs e) { OldMode = (sender as FormView).CurrentMode; } protected void fvBPAA_DataBound(object sender, EventArgs e) { switch (fvBPAA.CurrentMode) { case FormViewMode.Edit: SetClientFocus(fvBPAA, "txtBPAA_BPBGT"); break; case FormViewMode.Insert: SetClientFocus(fvBPAA, "txtBPAA_BPYER"); break; } } protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { CustomValidator v = source as CustomValidator; // 檢查年度是否為數字 int bpyer; if (!int.TryParse((fvBPAA.FindControl("txtBPAA_BPYER") as ITextControl).Text, out bpyer)) { args.IsValid = false; v.ErrorMessage = "年度請輸入民國年"; return; } switch (fvBPAA.CurrentMode) { case FormViewMode.Insert: DbCommand cmd = Query.NewCommand("SELECT COUNT(1) FROM BPAA WHERE BPPNM=@BPPNM AND BPYER=@BPYER"); cmd.Parameters.Add(Query.NewParameter("BPPNM", _BPPNM)); cmd.Parameters.Add(Query.NewParameter("BPYER", bpyer)); object o = Query.ExecuteScalar(cmd); // 重複 if (o != null && Convert.ToInt32(o) != 0) { args.IsValid = false; v.ErrorMessage = "本年度已開帳!請取消新增之後,用更正來修改預算及年度專案名稱"; return; } break; case FormViewMode.Edit: break; } } protected void fvBPAA_ItemCreated(object sender, EventArgs e) { switch (fvBPAA.CurrentMode) { case FormViewMode.Insert: (fvBPAA.FindControl("lbBPAA_BPPNM") as ITextControl).Text = _BPPNM; break; } } protected void gvBPAA_RowDataBound(object sender, GridViewRowEventArgs e) { SetGridViewMouseBehavier(gvBPAA, e.Row); //GridView_RowDataBound_Shrink_ViewState(sender, e); } protected void gvBPAA_SelectedIndexChanged(object sender, EventArgs e) { foreach (GridViewRow row in gvBPAA.Rows) SetGridViewMouseBehavier(gvBPAA, row); } protected void fvBPAA_ItemDeleting(object sender, FormViewDeleteEventArgs e) { // 刪除前檢查 cvMessage.ErrorMessage = ""; cvMessage.IsValid = true; // 1. 是否已有科目設定 DbCommand cmd1 = Query.NewCommand("SELECT COUNT(1) FROM BPAB WHERE BPPYN=@BPPYN"); cmd1.Parameters.Add(Query.NewParameter("BPPYN", e.Values["BPPYN"])); int i = Convert.ToInt32(Query.ExecuteScalar(cmd1)); if (i > 0) { cvMessage.ErrorMessage += "本年度已有科目設定。不可刪除!
"; cvMessage.IsValid = false; } // 2. 是否已有職稱設定 cmd1.CommandText = "SELECT COUNT(1) FROM BPJA WHERE BPPYN=@BPPYN"; cmd1.Parameters.Clear(); cmd1.Parameters.Add(Query.NewParameter("BPPYN", e.Values["BPPYN"])); i = Convert.ToInt32(Query.ExecuteScalar(cmd1)); if (i > 0) { cvMessage.ErrorMessage += "本年度已有職稱設定。不可刪除!
"; cvMessage.IsValid = false; } ProcessCustomValidatorMessage(cvMessage); e.Cancel = !cvMessage.IsValid; } protected void fvBPAA_ItemUpdating(object sender, FormViewUpdateEventArgs e) { CalcFields(e.NewValues); // 記住連鎖更正之舊值 //_OLD_BPPYN = e.OldValues["BPPYN"].ToString(); //e.NewValues["BPPYN"] = String.Format("{0:000}{1}", Convert.ToInt32(e.NewValues["BPYER"]), e.NewValues["BPPNM"]); } protected void fvBPAA_ItemInserting(object sender, FormViewInsertEventArgs e) { e.Values["BPPYN"] = String.Format("{0:000}{1}", Convert.ToInt32(e.Values["BPYER"]), e.Values["BPPNM"]); CalcFields(e.Values); } protected void cvBPFED_ServerValidate(object source, ServerValidateEventArgs args) { int i; args.IsValid = args.Value != "" && Int32.TryParse(args.Value, out i) && i >= 1 && i <= 31; } protected void fvBPAA_DataBinding(object sender, EventArgs e) { } }