Files
thinkyu/Web/forms/customer/fmBcus.ascx.cs
T
sryang 5c4e04788b feat: fmBcus GridView 改用 ObjectDataSource
- 新增 BcusDAC(SelectPage/SelectCount/SelectBCNUMIndex)

- dsBCUSGrid 改 ObjectDataSource(EnablePaging)

- Search/Selected/DataBound 調整;跳回選取列改用 SelectBCNUMIndex

- 計畫文檔更新盤點與待辦
2026-09-10 10:34:13 +08:00

330 lines
9.5 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;
public partial class forms_customer_fmBcus : Wellan.Web.UI.WUserControlBase
{
private string _BCNUM = "";
private string _BCNAM = "";
private string _OLD_BCNUM = "";
private string _bcusCls = "";
private string _bcusZon = "";
protected void Page_Load(object sender, EventArgs e)
{
_BCNUM = ViewState["BCNUM"] != null ? ViewState["BCNUM"].ToString() : "";
_BCNAM = ViewState["BCNAM"] != null ? ViewState["BCNAM"].ToString() : "";
//if (IsPostBack)
// gvBCUS.DataBind();
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
dsBCUSForm.ConnectionString = ConnectionString;
GetGridViewRowColor(gvBCUS);
switch (MultiView1.ActiveViewIndex)
{
case 0:
{
break;
}
case 1:
{
Search();
break;
}
}
}
// 查詢按鈕
protected void btnSearch_Click(object sender, EventArgs e)
{
ViewState["BCNUM"] = txtBCNUM.Text;
ViewState["BCNAM"] = txtBCNAM.Text;
_BCNUM = txtBCNUM.Text;
_BCNAM = txtBCNAM.Text;
if (_BCNUM.Length == 0 &&
_BCNAM.Length == 0)
{
cvMessage.ErrorMessage = GetString("NOSRHCOND");
cvMessage.IsValid = false;
}
else
{
MultiView1.ActiveViewIndex = 1;
Search();
gvBCUS.PageIndex = 0;
gvBCUS.SelectedIndex = 0;
gvBCUS.DataBind();
}
}
// 取消查詢按鈕
protected void btnCancel_Click(object sender, EventArgs e)
{
MultiView1.ActiveViewIndex = 1;
}
// 查詢動作
private new void Search()
{
dsBCUSGrid.SelectParameters["BCNUM"].DefaultValue = _BCNUM;
dsBCUSGrid.SelectParameters["BCNAM"].DefaultValue = _BCNAM;
// 返回時,回到之前選擇的那一筆
if (ParamList != null && ParamList.ContainsKey("BCNUM"))
{
string bcnum = WDAC.GetStringValue(ParamList["BCNUM"]);
int rowIndex = new BcusDAC(Query).SelectBCNUMIndex(bcnum, _BCNUM, _BCNAM);
if (rowIndex >= 0)
{
gvBCUS.PageIndex = rowIndex / gvBCUS.PageSize;
gvBCUS.SelectedIndex = rowIndex - gvBCUS.PageIndex * gvBCUS.PageSize;
}
ParamList.Remove("BCNUM");
}
}
private new void CalcFields(SqlDataSourceCommandEventArgs e)
{
}
// dataSource 新增存檔之前
protected void dsBCUSForm_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
CalcFields(e);
e.Command.Parameters["@BCNUM"].Value =
WGuard1.WNextRen(DateTime.UtcNow.AddHours(8), "BCUS", "BCNUM", String.Format("\"{0}{1}\"<9999>", _bcusZon, _bcusCls), " LEN(BCNUM)=6 ");
}
// dataSource 更正存檔之前
protected void dsBCUSForm_Updating(object sender, SqlDataSourceCommandEventArgs e)
{
CalcFields(e);
}
protected void gvBCUS_DataBound(object sender, EventArgs e)
{
GridView_DataBound(sender, e);
if (gvBCUS.SelectedIndex == -1)
gvBCUS.SelectedIndex = 0;
fvBCUS.DataBind();
}
protected void gvBCUS_PageIndexChanged(object sender, EventArgs e)
{
Search();
gvBCUS.SelectedIndex = 0;
gvBCUS.DataBind();
}
protected void dsBCUSGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
if (MultiView1.ActiveViewIndex == 0)
{
cvMessage.ErrorMessage = GetString("NODATA");
cvMessage.IsValid = false;
}
MultiView1.ActiveViewIndex = 0;
cvMessage.ErrorMessage = GetString("NODATA");
cvMessage.IsValid = false;
}
}
protected void fvBCUS_ItemCommand(object sender, FormViewCommandEventArgs e)
{
switch (e.CommandName)
{
case "Search":
MultiView1.ActiveViewIndex = 0;
SetClientFocus(txtBCNUM);
break;
case "Cancel":
Search();
fvBCUS.ChangeMode(FormViewMode.ReadOnly);
fvBCUS_ModeChanged(sender, e);
break;
case "BPRJ":
fvBCUS.DataBind();
if (fvBCUS.DataItem != null)
{
DataRowView rv = fvBCUS.DataItem as DataRowView;
ParamList.Clear();
ParamList.Add("BCNUM", rv["BCNUM"]);
DoAfterCommand("BPRJ");
}
break;
}
}
protected void fvBCUS_ItemDeleted(object sender, FormViewDeletedEventArgs e)
{
Search();
gvBCUS.DataBind();
fvBCUS.DataBind();
}
protected void fvBCUS_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
Search();
}
protected void fvBCUS_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
{
Search();
}
protected void fvBCUS_ModeChanged(object sender, EventArgs e)
{
if (fvBCUS.CurrentMode == FormViewMode.ReadOnly)
{
gvBCUS.Visible = true;
gvBCUS.DataBind();
if (gvBCUS.Rows.Count > 0 && gvBCUS.SelectedIndex == -1)
{
gvBCUS.SelectedIndex = 0;
}
if (OldMode == FormViewMode.Insert)
{
gvBCUS.PageIndex = gvBCUS.PageCount - 1;
gvBCUS.DataBind();
gvBCUS.SelectedIndex = gvBCUS.Rows.Count - 1;
}
fvBCUS.DataBind();
}
else
{
switch (fvBCUS.CurrentMode)
{
case FormViewMode.Edit:
break;
case FormViewMode.Insert:
break;
}
gvBCUS.Visible = false;
}
}
protected void fvBCUS_ModeChanging(object sender, FormViewModeEventArgs e)
{
OldMode = (sender as FormView).CurrentMode;
}
protected void fvBCUS_DataBound(object sender, EventArgs e)
{
switch (fvBCUS.CurrentMode)
{
case FormViewMode.Insert:
SetClientFocus(fvBCUS, "txtBCUS_BCNAM");
break;
case FormViewMode.Edit:
SetClientFocus(fvBCUS, "txtBCUS_BCNAM");
break;
case FormViewMode.ReadOnly:
if (fvBCUS.DataItem != null)
ViewState["OLD_BCNUM"] = (fvBCUS.DataItem as DataRowView)["BCNUM"];
break;
}
}
protected void rvBCNUM1_ServerValidate(object source, ServerValidateEventArgs args)
{
// 檢查客戶編號是否重複
_OLD_BCNUM = ViewState["OLD_BCNUM"] != null ? ViewState["OLD_BCNUM"].ToString() : "";
args.IsValid = true;
if (args.Value == _OLD_BCNUM)
return;
DbCommand cmd = Query.NewCommand("SELECT COUNT(1) FROM BCUS WHERE BCNUM=@BCNUM");
cmd.Parameters.Add(Query.NewParameter("BCNUM", args.Value));
object o = Query.ExecuteScalar(cmd);
args.IsValid = (o == null || Convert.ToInt32(o) == 0);
}
protected void gvBCUS_RowDataBound(object sender, GridViewRowEventArgs e)
{
SetGridViewMouseBehavier(gvBCUS, e.Row);
//GridView_RowDataBound_Shrink_ViewState(sender, e);
}
protected void gvBCUS_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in gvBCUS.Rows)
SetGridViewMouseBehavier(gvBCUS, row);
}
protected void cvBCIDN_ServerValidate(object source, ServerValidateEventArgs args)
{
// 檢查統一編號是否正確
args.IsValid = WGuard1.WCheckUbiNumber(args.Value) == 0;
}
protected void cvBCMQT_ServerValidate(object source, ServerValidateEventArgs args)
{
// 檢查員工人數應為正數
int i;
args.IsValid = args.Value != "" && int.TryParse(args.Value, out i) && i > 0;
}
protected void fvBCUS_ItemDeleting(object sender, FormViewDeleteEventArgs e)
{
// 刪除前檢查
// 檢查是否有專案資料
DbCommand cmd = Query.NewCommand("SELECT COUNT(1) FROM BPRJ WHERE BPNUM=@BPNUM");
cmd.Parameters.Add(Query.NewParameter("BPNUM", e.Keys["BCNUM"]));
object o = Query.ExecuteScalar(cmd);
if (o != null && Convert.ToInt32(o) > 0)
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "此客戶有專案資料,不可刪除";
e.Cancel = true;
}
}
protected void fvBCUS_ItemInserting(object sender, FormViewInsertEventArgs e)
{
_bcusCls = (fvBCUS.FindControl("ddlClass") as DropDownList).SelectedValue;
_bcusZon = (fvBCUS.FindControl("ddlZone") as DropDownList).SelectedValue;
}
// 查詢畫面的新增按鈕
protected void btnInsert_Click(object sender, EventArgs e)
{
gvBCUS.Visible = false;
fvBCUS.ChangeMode(FormViewMode.Insert);
MultiView1.ActiveViewIndex = 1;
}
}