⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 value_admin_back.aspx.cs

📁 人力资源管理系统 读者须安装好IIS和Microsoft Visual Stutio.NET相关开发环境
💻 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 + -