- 新增 BpabDAC(SelectPage/SelectCount,mode 區分 科目/大類/小類) - 三檔 dsBPABGrid 改 ObjectDataSource(EnablePaging) - Search/Selected 調整 - 計畫文檔更新
299 lines
9.1 KiB
C#
299 lines
9.1 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 System.Data.Common;
|
|
using Wellan.Data;
|
|
using Wellan.Common;
|
|
using System.Text;
|
|
using System.IO;
|
|
using System.Drawing;
|
|
|
|
/// <summary>
|
|
/// 年度科目設定(大類)
|
|
/// </summary>
|
|
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;
|
|
}
|
|
}
|