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.Text; using Wellan.Common; using Wellan.Data; using System.Data.Common; /// /// 專案處理人員 /// public partial class forms_customer_fmBprm : Wellan.Web.UI.WUserControlBase { protected string _BPPNM = ""; protected void Page_Load(object sender, EventArgs e) { //if (IsPostBack) // gvBPRM.DataBind(); } protected override void OnInit(EventArgs e) { base.OnInit(e); if (ddlBCUS.Items.Count == 0) { DbCommand cmd1 = Query.NewCommand(); cmd1.CommandText = @"SELECT '' AS BCNUM, '(請選擇客戶)' AS BCNAM UNION ALL SELECT BCNUM, '(' + BCNUM + ') ' + BCNAM AS BCNAM FROM BCUS ORDER BY BCNUM"; ddlBCUS.DataSource = Query.Select(cmd1); ddlBCUS.DataValueField = "BCNUM"; ddlBCUS.DataTextField = "BCNAM"; ddlBCUS.DataBind(); } BindBPRJListBox(); /* 舊作法程式 dsBPRMForm.ConnectionString = ConnectionString; dsBPRMGrid.ConnectionString = ConnectionString; _BPPNM = GetStringParam("BPPNM"); GetGridViewRowColor(gvBPRM); Search(); */ } #region 新作法程式 protected void BindBPRJListBox() { DbCommand cmd1 = Query.NewCommand(); cmd1.CommandText = @"SELECT BPPNM, '(' + BPPNM + ') ' + BPPME AS BPPME FROM BPRJ WHERE BPNUM=@BPNUM AND EXISTS (SELECT 1 FROM BPAA WHERE BPAA.BPPNM=BPRJ.BPPNM AND (BPAA.BPPNM = 'TYB00001' OR BPAA.BPPNM = 'JYB00001' OR BPAA.BPYER=@BPYER)) ORDER BY BPPNM"; Query.AddParam(cmd1, "BPNUM", ddlBCUS.SelectedValue); Query.AddParam(cmd1, "BPYER", WQuery.GetInt32Value(txtYear.Text)); lbProject.DataSource = Query.Select(cmd1); lbProject.DataValueField = "BPPNM"; lbProject.DataTextField = "BPPME"; lbProject.DataBind(); if (lbProject.Items.Count > 0 && lbProject.SelectedIndex == -1) { lbProject.SelectedIndex = 0; BindWorkerListBox(); } } protected void BindWorkerListBox() { DbCommand cmd1 = Query.NewCommand(); cmd1.CommandText = String.Format( @"SELECT BPENO, '(' + BPENO + ') ' + BPNME AS BPNME FROM BPSNView WHERE BPEDY IS NULL AND BPDPT IN {0} AND EXISTS (SELECT BWEH.BPENO FROM BWEH WHERE BWEH.BPGLP='03' AND BWEH.BPENO=BPSNView.BPENO) AND EXISTS (SELECT * FROM BPRM WHERE BPPNM=@BPPNM AND BPRM.BPENO=BPSNView.BPENO)", PublicVariable.InnerDepartment); Query.AddParam(cmd1, "BPPNM", lbProject.SelectedValue); DbCommand cmd2 = Query.NewCommand(); cmd2.CommandText = String.Format( @"SELECT BPENO, '(' + BPENO + ') ' + BPNME AS BPNME FROM BPSNView WHERE BPEDY IS NULL AND BPDPT IN {0} AND EXISTS (SELECT BWEH.BPENO FROM BWEH WHERE BWEH.BPGLP='03' AND BWEH.BPENO=BPSNView.BPENO) AND NOT EXISTS (SELECT * FROM BPRM WHERE BPPNM=@BPPNM AND BPRM.BPENO=BPSNView.BPENO)", PublicVariable.InnerDepartment); Query.AddParam(cmd2, "BPPNM", lbProject.SelectedValue); lbInWork.DataSource = Query.Select(cmd1); lbInWork.DataValueField = "BPENO"; lbInWork.DataTextField = "BPNME"; lbInWork.DataBind(); lbOutWork.DataSource = Query.Select(cmd2); lbOutWork.DataValueField = "BPENO"; lbOutWork.DataTextField = "BPNME"; lbOutWork.DataBind(); } protected void WButton1_Click(object sender, EventArgs e) { BindBPRJListBox(); } protected void lbProject_SelectedIndexChanged(object sender, EventArgs e) { BindWorkerListBox(); } protected void btnMoveIn_Click(object sender, ImageClickEventArgs e) { DbCommand cmd1 = Query.NewCommand(); cmd1.CommandText = @"SELECT BPENO FROM BPRM WHERE BPPNM=@BPPNM AND BPENO=@BPENO"; DbCommand cmd2 = Query.NewCommand(); cmd2.CommandText = @"INSERT INTO BPRM (BPPNM, BPENO, APPNO) VALUES (@BPPNM, @BPENO, 1)"; foreach (ListItem item in lbOutWork.Items) { if (!item.Selected) continue; Query.AddParam(cmd1, "BPPNM", lbProject.SelectedValue); Query.AddParam(cmd1, "BPENO", item.Value); if (Query.Select(cmd1).Rows.Count == 0) { Query.AddParam(cmd2, "BPPNM", lbProject.SelectedValue); Query.AddParam(cmd2, "BPENO", item.Value); Query.ExecuteNonQuery(cmd2); } } BindWorkerListBox(); } protected void btnMoveOut_Click(object sender, ImageClickEventArgs e) { DbCommand cmd1 = Query.NewCommand(); cmd1.CommandText = @"DELETE FROM BPRM WHERE BPPNM=@BPPNM AND BPENO=@BPENO"; foreach (ListItem item in lbInWork.Items) { if (!item.Selected) continue; Query.AddParam(cmd1, "BPPNM", lbProject.SelectedValue); Query.AddParam(cmd1, "BPENO", item.Value); Query.ExecuteNonQuery(cmd1); } BindWorkerListBox(); } #endregion #region 舊作法程式 // 查詢動作 private new void Search() { dsBPRMGrid.SelectParameters["BPPNM"].DefaultValue = _BPPNM; } protected void dsBPRMGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e) { if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0) { fvBPRM.ChangeMode(FormViewMode.Insert); } } protected void dsBPRM_Selected(object sender, SqlDataSourceStatusEventArgs e) { if (e.AffectedRows == 0) { fvBPRM.ChangeMode(FormViewMode.Insert); } } protected void fvBPRM_DataBound(object sender, EventArgs e) { switch (fvBPRM.CurrentMode) { case FormViewMode.Insert: case FormViewMode.Edit: RegisterLookupEvent(fvBPRM, "btnBPRM_BPENO_WQRY", "txtBPRM_BPENO", "txtBPRM_BPENO,lbBPRM_BPENOX", "BPSN", String.Format("BPEDY IS NULL AND BPDPT IN {0} AND NOT EXISTS (SELECT * FROM BPRM WHERE BPRM.BPPNM='" + _BPPNM + "' AND BPRM.BPENO=BPSNView.BPENO)", PublicVariable.InnerDepartment)); SetClientFocus(fvBPRM, "txtBPRM_BPENO"); break; } } protected void gvBPRM_DataBound(object sender, EventArgs e) { GridView_DataBound(sender, e); if (gvBPRM.SelectedIndex == -1 && gvBPRM.Rows.Count > 0) gvBPRM.SelectedIndex = 0; fvBPRM.DataBind(); } protected void gvBPRM_PageIndexChanged(object sender, EventArgs e) { Search(); gvBPRM.SelectedIndex = 0; gvBPRM.DataBind(); } protected void fvBPRM_ItemCommand(object sender, FormViewCommandEventArgs e) { switch (e.CommandName) { case "Cancel": Search(); fvBPRM.ChangeMode(FormViewMode.ReadOnly); fvBPRM_ModeChanged(sender, e); break; case "BPRJ": DoAfterCommand("BPRJ"); break; } } protected void fvBPRM_ModeChanged(object sender, EventArgs e) { if (fvBPRM.CurrentMode == FormViewMode.ReadOnly) { gvBPRM.Visible = true; gvBPRM.DataBind(); if (gvBPRM.Rows.Count > 0 && gvBPRM.SelectedIndex == -1) { gvBPRM.SelectedIndex = 0; } if (OldMode == FormViewMode.Insert && gvBPRM.Rows.Count > 0) { gvBPRM.PageIndex = gvBPRM.PageCount - 1; gvBPRM.DataBind(); gvBPRM.SelectedIndex = gvBPRM.Rows.Count - 1; } fvBPRM.DataBind(); } else { gvBPRM.Visible = false; } } protected void fvBPRM_ModeChanging(object sender, FormViewModeEventArgs e) { OldMode = (sender as FormView).CurrentMode; } protected void CalcFields(System.Collections.Specialized.IOrderedDictionary values) { } protected bool CheckDuplicate(string bpeno) { DbCommand cmd = Query.NewCommand( @"SELECT COUNT(1) FROM BPRM WHERE BPPNM=@BPPNM AND BPENO=@BPENO"); cmd.Parameters.Add(Query.NewParameter("BPPNM", _BPPNM)); cmd.Parameters.Add(Query.NewParameter("BPENO", bpeno)); object o = Query.ExecuteScalar(cmd); return (o == null || o == DBNull.Value || Convert.ToInt32(o) == 0); } protected void fvBPRM_ItemInserting(object sender, FormViewInsertEventArgs e) { // 檢查是否重複 if (!CheckDuplicate(e.Values["BPENO"].ToString())) { cvMessage.ErrorMessage = "員工編號重複,請重新輸入"; cvMessage.IsValid = false; e.Cancel = true; } CalcFields(e.Values); e.Values["BPPNM"] = _BPPNM; } protected void fvBPRM_ItemUpdating(object sender, FormViewUpdateEventArgs e) { // 檢查是否重複 if (e.OldValues["BPENO"].ToString() != e.NewValues["BPENO"].ToString() && !CheckDuplicate(e.NewValues["BPENO"].ToString())) { cvMessage.ErrorMessage = "員工編號重複,請重新輸入"; cvMessage.IsValid = false; e.Cancel = true; } CalcFields(e.NewValues); } protected void gvBPRM_RowDataBound(object sender, GridViewRowEventArgs e) { SetGridViewMouseBehavier(sender as GridView, e.Row); //GridView_RowDataBound_Shrink_ViewState(sender, e); } protected void gvBPRM_SelectedIndexChanged(object sender, EventArgs e) { foreach (GridViewRow row in (sender as GridView).Rows) SetGridViewMouseBehavier(sender as GridView, row); } 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) && bpsn.GetDepartment(args.Value) != "X"; } protected void dsBPRMForm_Selecting(object sender, SqlDataSourceSelectingEventArgs e) { e.Command.Parameters["@BPPNM"].Value = _BPPNM; } protected void fvBPRM_ItemDeleted(object sender, FormViewDeletedEventArgs e) { Search(); gvBPRM.DataBind(); if (gvBPRM.SelectedIndex > gvBPRM.Rows.Count - 1) { gvBPRM.SelectedIndex = gvBPRM.Rows.Count - 1; gvBPRM.DataBind(); } fvBPRM.DataBind(); } protected void fvBPRM_ItemInserted(object sender, FormViewInsertedEventArgs e) { Search(); } protected void fvBPRM_ItemUpdated(object sender, FormViewUpdatedEventArgs e) { Search(); } #endregion }