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_fmBpabBig : Wellan.Web.UI.WUserControlBase { protected string _BPNUM = ""; protected string _BPPYN = ""; protected void Page_Load(object sender, EventArgs e) { //if (IsPostBack) // gvBPAB.DataBind(); } protected override void OnInit(EventArgs e) { base.OnInit(e); dsBPABForm.ConnectionString = ConnectionString; _BPNUM = GetStringParam("BPNUM"); _BPPYN = GetStringParam("BPPYN"); GetGridViewRowColor(gvBPAB); Search(); } // 查詢動作 private new void Search() { dsBPABGrid.SelectParameters["BPPYN"].DefaultValue = _BPPYN; } private new void CalcFields(SqlDataSourceCommandEventArgs e) { } protected void dsBPABForm_Inserting(object sender, SqlDataSourceCommandEventArgs e) { CalcFields(e); e.Command.Parameters["@BPACC"].Value = WGuard1.WNextRen(DateTime.UtcNow.AddHours(8), "BPAB", "BPACC", "<99>\"0000\"", String.Format("BPPYN='{0}'", _BPPYN)); e.Command.Parameters["@BPCLS"].DbType = DbType.String; e.Command.Parameters["@BPCLS"].Size = 8; e.Command.Parameters["@BPCLS"].Value = String.Format("{0:00}", Convert.ToInt32(e.Command.Parameters["@BPORD"].Value)) + "0000"; } protected void dsBPABForm_Updating(object sender, SqlDataSourceCommandEventArgs e) { CalcFields(e); int newBpord = Convert.ToInt32(e.Command.Parameters["@BPORD"].Value); e.Command.Parameters["@BPCLS"].Value = String.Format("{0:00}", newBpord) + "0000"; e.Command.Connection.Open(); e.Command.Transaction = e.Command.Connection.BeginTransaction(); } protected void dsBPABForm_Updated(object sender, SqlDataSourceStatusEventArgs e) { int newBpord = Convert.ToInt32(e.Command.Parameters["@BPORD"].Value); int oldBpord = ViewState["OLD_BPORD"] != null && ViewState["OLD_BPORD"].ToString() != "" ? Convert.ToInt32(ViewState["OLD_BPORD"]) : 0; string oldBpacc = e.Command.Parameters["@OLD_BPACC"].Value.ToString(); try { if (newBpord != oldBpord) { DbCommand cmd = Query.NewCommand( @"UPDATE BPAB SET BPCLS = @NEW_BPORD + SUBSTRING(BPCLS, 3, 4) WHERE SUBSTRING(BPACC, 1, 2)=@BPACC"); cmd.Parameters.Add(Query.NewParameter("NEW_BPORD", newBpord.ToString("00"))); cmd.Parameters.Add(Query.NewParameter("BPACC", oldBpacc.Substring(0, 2))); cmd.Connection = e.Command.Connection; cmd.Transaction = e.Command.Transaction; cmd.ExecuteNonQuery(); } e.Command.Transaction.Commit(); e.Command.Connection.Close(); } catch { e.Command.Transaction.Rollback(); e.Command.Connection.Close(); } } protected void gvBPAB_DataBound(object sender, EventArgs e) { GridView_DataBound(sender, e); if (gvBPAB.Rows.Count > 0) { if (gvBPAB.SelectedIndex == -1) gvBPAB.SelectedIndex = 0; fvBPAB.DataBind(); if (fvBPAB.DataItem != null) ViewState["OLD_BPORD"] = (fvBPAB.DataItem as DataRowView)["BPORD"].ToString(); } } protected void gvBPAB_PageIndexChanged(object sender, EventArgs e) { Search(); gvBPAB.SelectedIndex = 0; gvBPAB.DataBind(); } protected void dsBPABGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e) { if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0) { gvBPAB.Visible = false; fvBPAB.ChangeMode(FormViewMode.Insert); fvBPAB_ModeChanged(sender, e); } } protected void fvBPAB_ItemCommand(object sender, FormViewCommandEventArgs e) { switch (e.CommandName) { case "Insert": break; case "Edit": break; case "Delete": break; case "Cancel": Search(); fvBPAB.ChangeMode(FormViewMode.ReadOnly); fvBPAB_ModeChanged(sender, e); if (gvBPAB.Rows.Count == 0) { //ParamList.Clear(); DoAfterCommand("BPAA"); } break; case "Small": DoAfterCommand("SMALL"); break; case "Detail": DoAfterCommand("DETAIL"); break; case "Return": //ParamList.Clear(); DoAfterCommand("BPAA"); break; } } protected void fvBPAB_ItemDeleted(object sender, FormViewDeletedEventArgs e) { Search(); gvBPAB.DataBind(); if (gvBPAB.SelectedIndex > gvBPAB.Rows.Count - 1) { gvBPAB.SelectedIndex = gvBPAB.Rows.Count - 1; gvBPAB.DataBind(); } fvBPAB.DataBind(); } protected void fvBPAB_ItemInserted(object sender, FormViewInsertedEventArgs e) { Search(); } protected void fvBPAB_ItemUpdated(object sender, FormViewUpdatedEventArgs e) { Search(); } protected void fvBPAB_ModeChanged(object sender, EventArgs e) { switch (fvBPAB.CurrentMode) { case FormViewMode.ReadOnly: gvBPAB.Visible = true; gvBPAB.DataBind(); if (gvBPAB.Rows.Count > 0) { if (gvBPAB.SelectedIndex == -1) { gvBPAB.SelectedIndex = 0; } if (OldMode == FormViewMode.Insert) { gvBPAB.PageIndex = gvBPAB.PageCount - 1; gvBPAB.DataBind(); gvBPAB.SelectedIndex = gvBPAB.Rows.Count - 1; } fvBPAB.DataBind(); } break; case FormViewMode.Edit: gvBPAB.Visible = false; break; case FormViewMode.Insert: gvBPAB.Visible = false; break; } } protected void fvBPAB_ModeChanging(object sender, FormViewModeEventArgs e) { OldMode = (sender as FormView).CurrentMode; } protected void fvBPAB_DataBound(object sender, EventArgs e) { switch (fvBPAB.CurrentMode) { case FormViewMode.Edit: SetClientFocus(fvBPAB, "txtBPAB_BPAME"); break; case FormViewMode.Insert: SetClientFocus(fvBPAB, "txtBPAB_BPAME"); break; case FormViewMode.ReadOnly: if (fvBPAB.DataItem != null) ViewState["OLD_BPORD"] = (fvBPAB.DataItem as DataRowView)["BPORD"].ToString(); break; } } protected void fvBPAB_ItemCreated(object sender, EventArgs e) { switch (fvBPAB.CurrentMode) { case FormViewMode.Insert: (fvBPAB.FindControl("lbBPAB_BPPYN") as ITextControl).Text = _BPPYN; //(fvBPAB.FindControl("lbBPAB_BPYER") as ITextControl).Text = _BPYER.ToString(); break; } } protected void gvBPAB_RowDataBound(object sender, GridViewRowEventArgs e) { SetGridViewMouseBehavier(sender as GridView, e.Row); //GridView_RowDataBound_Shrink_ViewState(sender, e); } protected void gvBPAB_SelectedIndexChanged(object sender, EventArgs e) { foreach (GridViewRow row in gvBPAB.Rows) SetGridViewMouseBehavier(gvBPAB, row); } protected void fvBPAB_ItemDeleting(object sender, FormViewDeleteEventArgs e) { // 刪除前檢查 // 1. 是否已有科目設定 DbCommand cmd1 = Query.NewCommand("SELECT COUNT(1) FROM BPAB WHERE BPPYN=@BPPYN AND BPACC >= @BPACC + '0001' AND BPACC <= @BPACC + '9999'"); cmd1.Parameters.Add(Query.NewParameter("BPPYN", e.Values["BPPYN"])); cmd1.Parameters.Add(Query.NewParameter("BPACC", e.Values["BPACC"].ToString().Substring(0, 2))); int i = Convert.ToInt32(Query.ExecuteScalar(cmd1)); if (i > 0) { cvMessage.ErrorMessage = "本大類之下有小類及科目。不可刪除!"; cvMessage.IsValid = false; e.Cancel = true; } } protected void cvBPORD_ServerValidate(object source, ServerValidateEventArgs args) { int i; args.IsValid = int.TryParse(args.Value, out i) && i > 0 && i < 100; } }