📄 value_admin_back.aspx.cs
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Web.UI.WebControls;
using HRAdmin.BLL ;
using HRAdmin.COMMON ;
namespace HRAdmin.USL
{
/// <summary>
/// Value_Admin 的摘要说明。
/// </summary>
public class Value_Admin : System.Web.UI.Page
{
#region 控件
protected System.Web.UI.WebControls.DataGrid dg;
protected System.Web.UI.WebControls.TextBox tb_ValueType;
protected System.Web.UI.WebControls.Button b_Delete;
protected System.Web.UI.WebControls.Button b_Add;
protected System.Web.UI.WebControls.Button b_NewValue;
protected System.Web.UI.WebControls.Button b_DelValue;
protected System.Web.UI.WebControls.Button b_Modify;
protected System.Web.UI.WebControls.TextBox tb_ValueName;
protected System.Web.UI.WebControls.TextBox tb_ValueID;
protected System.Web.UI.WebControls.TextBox tb_ValueText;
protected System.Web.UI.HtmlControls.HtmlInputHidden RECID;
protected Microsoft.Web.UI.WebControls.TreeView tree_list;
protected System.Web.UI.HtmlControls.HtmlInputHidden NEWID;
protected System.Web.UI.WebControls.Button b_Submit;
protected System.Web.UI.WebControls.Button b_Clear;
private DataTable dtValue = null ;
#endregion
#region Page_Load
private void Page_Load(object sender, System.EventArgs e)
{
//未登录、重定向到登录页面
//从Session中取dtValue
dtValue = (DataTable)Session["dtValue"] ;
//若dtValue为空,创建它
if(dtValue == null)
{
CreateDtValue() ;
}
//为删除下拉框按钮添加确认对话框
CommHandler.AddConfirm(this.b_DelValue,"") ;
if( !IsPostBack )
{
InitData() ;
}
BindGrid() ;
}
private void InitData()
{
//初始化树
InitTree() ;
//清空画面
Clear() ;
//将小按钮置为不可用
BtnEnabled(0) ;
}
private void InitTree()
{
//初始化前,先清空树原来的节点
tree_list.Nodes.Clear();
//树的数据源
DataTable dt = new DataTable() ;
//调用ValueInfo的查询所有下来框信息的方法
dt = ValueInfo.GetAllValue() ;
for(int i=0;i<dt.Rows.Count;i++)
{
TreeNode node = null;
string nodeText = dt.Rows[i]["VALUENAME"].ToString();
string nodeID = dt.Rows[i]["VALUETYPE"].ToString();
//新建节点
if(node == null || node.Text != nodeText)
{
node = new TreeNode();
node.ID = nodeID;
node.NodeData = "";
node.Text = nodeText;
tree_list.Nodes.Add(node);
}
//初始时,树的选中节点置为空
tree_list.SelectedNodeIndex = null ;
}
}
private void BtnEnabled(int flag)
{
if(flag == 0)
{
//画面初始时,树没有选中的下拉框
//都不可用
this.b_Add.Enabled = false ;
this.b_Modify.Enabled = false ;
this.b_Delete.Enabled = false ;
}
else if(flag == 1)
{
//树有选中的下拉框,但表格中没有选中的值
//仅“添加”按钮可用
b_Add.Enabled = true ;
b_Modify.Enabled = false ;
b_Modify.Enabled = false ;
}
else if(flag == 2)
{
//树有选中的下拉框,表中亦有选中值
//添加不可用
b_Add.Enabled = false ;
b_Modify.Enabled = true ;
b_Delete.Enabled = true ;
}
}
#endregion
#region 表格相关
/// <summary>
/// 为表格绑定数据源
/// </summary>
private void BindGrid()
{
//如果dtValue为空,创建它
if(dtValue == null)
{
CreateDtValue() ;
}
//为表格绑定数据源
dg.DataSource = dtValue ;
dg.DataBind() ;
}
/// <summary>
/// 创建dtValue表
/// </summary>
private void CreateDtValue()
{
//实例化表格
dtValue = new DataTable() ;
//添加列
dtValue.Columns.Add("RECID") ; //流水号,做主键
dtValue.Columns.Add("VALUETYPE") ; //下拉框类型
dtValue.Columns.Add("VALUENAME") ; //下拉框名称
dtValue.Columns.Add("VALUEID") ; //下拉框选项ID
dtValue.Columns.Add("VALUETEXT") ; //下拉框选项文本
//列添加完毕
dtValue.PrimaryKey = new DataColumn[] {dtValue.Columns["RECID"]} ;
}
#endregion
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.tree_list.SelectedIndexChange += new Microsoft.Web.UI.WebControls.SelectEventHandler(this.tree_list_SelectedIndexChange);
this.dg.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dg_ItemCommand);
this.b_Add.Click += new System.EventHandler(this.b_Add_Click);
this.b_Modify.Click += new System.EventHandler(this.b_Modify_Click);
this.b_Delete.Click += new System.EventHandler(this.b_Delete_Click);
this.b_Submit.Click += new System.EventHandler(this.b_Submit_Click);
this.b_NewValue.Click += new System.EventHandler(this.b_NewValue_Click);
this.b_DelValue.Click += new System.EventHandler(this.b_DelValue_Click);
this.b_Clear.Click += new System.EventHandler(this.b_Clear_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
#region 为下拉框添加子项
private void b_Add_Click(object sender, System.EventArgs e)
{
//数据检测
if( !this.CheckData())
{
return ;
}
if(RECID.Value != "")
{
CommHandler.Alert(Page,"添加下拉选项请先清空原选项!") ;
return ;
}
//添加
Add() ;
AfterOpt() ;
}
private void Add()
{
//添加新行
DataRow dr = dtValue.NewRow() ;
//产生新ID,虚拟
dr["RECID"] = "new" + NewID() ;
//为新行绑定其他数据
BindValue(dr) ;
//将新的DataRow添加进dtValue
dtValue.Rows.Add(dr) ;
}
private void AfterOpt()
{
Session["dtValue"] = this.dtValue ;
BindGrid() ;
SubClear() ;
}
private void SubClear()
{
//清空各文本框
foreach(TextBox tb in new TextBox[] {tb_ValueID,tb_ValueText} )
{
//清空
tb.Text = "" ;
}
//清空RECID
RECID.Value = "" ;
//按钮恢复到可添加不可删除修改的状态
this.BtnEnabled(1) ;
}
/// <summary>
/// 产生当前不重复的虚拟ID号作为dtValue的主键用
/// </summary>
/// <returns>虚拟ID</returns>
private string NewID()
{
string vid = "" ;
//从NEWID中取出保存的id
int i = CommHandler.StringToInt(NEWID.Value) + 1 ;
vid = i.ToString() ;
//将当前产生的ID号保存进NEWID
NEWID.Value = vid ;
return vid ;
}
private void BindValue(DataRow dr)
{
dr["ValueType"] = this.tb_ValueType.Text.Trim() ;
dr["ValueName"] = this.tb_ValueName.Text.Trim() ;
dr["ValueID"] = this.tb_ValueID.Text.Trim() ;
dr["ValueText"] = this.tb_ValueText.Text.Trim() ;
}
#endregion
#region 修改下拉框子项
private void b_Modify_Click(object sender, System.EventArgs e)
{
if( this.CheckData())
{
return ;
}
string id = RECID.Value ;
if(id == "")
{
CommHandler.Alert(Page,"请在表格中选择要修改的下拉选项!") ;
return ;
}
Modify(id) ;
AfterOpt() ;
}
private void Modify(string id)
{
//在dtValue中找到要修改的行
DataRow dr = dtValue.Rows.Find(id) ;
//开始编辑
dr.BeginEdit() ;
//修改dr各项
if(dr != null)
{
BindValue(dr) ;
}
//结束编辑
dr.EndEdit() ;
}
#endregion
#region 删除下拉选项
private void b_Delete_Click(object sender, System.EventArgs e)
{
string id = RECID.Value ;
if(id == "")
{
CommHandler.Alert(Page,"请在表格中选择要修改的下拉选项!") ;
return ;
}
//找到要删除的行
DataRow dr = dtValue.Rows.Find(id) ;
//从dtValue中删除
dtValue.Rows.Remove(dr) ;
AfterOpt() ;
}
#endregion
#region 提交修改
//将对下来框所做的修改提交到数据库
private void b_Submit_Click(object sender, System.EventArgs e)
{
//先将新加下拉选项的临时ID清除
DataTable dt = dtValue.Copy() ;
dt.PrimaryKey = null ;
for(int i=0 ;i<dt.Rows.Count; i++)
{
if(dt.Rows[i]["RECID"].ToString().StartsWith("new"))
{
dt.Rows[i]["RECID"] = "" ;
}
}
int ret = ValueInfo.UpdateValue(dt) ;
if(ret > -1)
{
this.InitData() ;
CommHandler.Alert(Page,"所做的修改成功提交到数据库!") ;
}
BindGrid() ;
}
#endregion
#region 数据检测
private bool CheckData()
{
bool ret = true ;
//待检测的数据
DataCheck.CheckedData[] data = new DataCheck.CheckedData[]
{
new DataCheck.CheckedData(this.tb_ValueType.Text.Trim(),"下拉框类型",false,10,DataCheck.DataSort.NotAllowSingleQuote),
new DataCheck.CheckedData(this.tb_ValueName.Text.Trim(),"下拉框名称",false,10,DataCheck.DataSort.NotAllowSingleQuote),
new DataCheck.CheckedData(this.tb_ValueID.Text.Trim(),"下拉选项ID",false,10,DataCheck.DataSort.NotAllowSingleQuote),
new DataCheck.CheckedData(this.tb_ValueText.Text.Trim(),"下拉选项文本",false,10,DataCheck.DataSort.NotAllowSingleQuote)
} ;
//检测数据,获得检测结果
string msg = DataCheck.CheckedData.Check(data) ;
if(msg != "")
{
//格式不符
ret = false ;
//输出提示
CommHandler.Alert(Page,msg) ;
}
return ret ;
}
#endregion
#region 添加新的下拉框
private void b_NewValue_Click(object sender, System.EventArgs e)
{
//清空画面
Clear() ;
//树的选中节点置为空
this.tree_list.SelectedNodeIndex = null ;
//删除下拉框按钮不可用
this.b_DelValue.Enabled = false ;
//
CommHandler.TextBoxReadOnly(tb_ValueType,false) ;
CommHandler.TextBoxReadOnly(tb_ValueName,false) ;
}
#endregion
#region 删除下拉框
private void b_DelValue_Click(object sender, System.EventArgs e)
{
//取下来框类型和名称
string type = this.tb_ValueType.Text.Trim() ;
string name = this.tb_ValueName.Text.Trim() ;
//调用ValueInfo的删除函数
int ret = ValueInfo.DeleteValue(type) ;
if(ret > 0 )
{
//重新初始化页面
InitData() ;
CommHandler.Alert(Page,"删除下拉框[" + name + "]成功") ;
}
}
#endregion
#region 表格的选中事件
private void dg_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int row = e.Item.ItemIndex ;
if(dtValue.Rows.Count > row )
{
DataRow dr = dtValue.Rows[row] ;
this.tb_ValueID.Text = dr["ValueID"].ToString() ;
this.tb_ValueText.Text = dr["ValueText"].ToString() ;
RECID.Value = dr["RECID"].ToString() ;
}
BtnEnabled(2) ;
}
#endregion
#region 树的选中事件
private void tree_list_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
//清空画面
Clear() ;
//选中的节点
TreeNode node=tree_list.GetNodeFromIndex(e.NewNode);
string type = node.ID ;
string name = node.Text ;
//显示节点内容
this.tb_ValueType.Text = type ;
this.tb_ValueName.Text = name ;
//查询选中的下拉框
Search(type) ;
}
/// <summary>
/// 查询指定TYPE的所有下拉框值
/// </summary>
/// <param name="type">TYPE</param>
private void Search(string type)
{
//调用ValueInfo的查询函数
dtValue = ValueInfo.GetValue(type) ;
//绑定表格
BindGrid() ;
}
#endregion
#region 清空画面
private void b_Clear_Click(object sender, System.EventArgs e)
{
//清空画面
Clear() ;
}
/// <summary>
/// 清空画面
/// </summary>
private void Clear()
{
//清空下拉选项
SubClear() ;
//清空各文本框
foreach(TextBox tb in new TextBox[] {tb_ValueName,tb_ValueType} )
{
//清空
tb.Text = "" ;
CommHandler.TextBoxReadOnly(tb,true) ;
}
this.b_DelValue.Enabled = false ;
this.tree_list.SelectedNodeIndex = null ;
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -