submitlvreq.aspx.cs

来自「基于.net(c#+sql)人事管理系统」· CS 代码 · 共 527 行 · 第 1/2 页

CS
527
字号
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 DBUtils;


namespace BlueHill.SubmitLeave
{
    
	/// <summary>
	/// SubmitLvReq 的摘要说明。
	/// </summary>
	public class SubmitLvReq : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Label Label1;
		protected System.Web.UI.WebControls.Label lblName;
		protected System.Web.UI.WebControls.Label InformationMsg;
		protected System.Web.UI.WebControls.Label lblALhours;
		protected System.Web.UI.WebControls.Label Label2;
		protected System.Web.UI.WebControls.DropDownList cmbApproverList;
		protected System.Web.UI.WebControls.Label Label3;
		protected System.Web.UI.WebControls.Calendar cldStartDate;
		protected System.Web.UI.WebControls.Label Label4;
		protected System.Web.UI.WebControls.Calendar cldEndDate;
		protected System.Web.UI.WebControls.DropDownList cmbStartTime;
		protected System.Web.UI.WebControls.DropDownList cmbEndTime;
		protected System.Web.UI.WebControls.Label Label7;
		protected System.Web.UI.WebControls.TextBox txtReason;
		protected System.Web.UI.WebControls.Label lblTotalHours;
		protected System.Web.UI.WebControls.Label lblTest;
		protected System.Web.UI.WebControls.Button btnCalculate;
		protected System.Web.UI.WebControls.Button btnSubmit;
		protected System.Web.UI.WebControls.Label lblErrorMsg;


		//声明 alHolidayL 数组,该数组保存“开始时间”日历控件对应月份所包含的国定假日。
		private ArrayList alHolidayL = new ArrayList(10);
		//声明 alHolidayR 数组,该数组保存“结束时间”日历控件对应月份所包含的国定假日。
		private ArrayList alHolidayR = new ArrayList(10);
	

		/// <summary>
		/// 网页初始化时执行该方法。
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
			lblTest.Visible = false;
        
			if ( !IsPostBack )
			{
				//如果网页是第一次生成时,执行如下操作:
        
				Employee emp = new Employee();
				int iEmpID;

				//检查员工的登录信息是否丢失,是则显示出错信息。
				if ( Session["EmployeeID"] == null )
				{
					lblErrorMsg.Text = "登录信息丢失,请重新登录!";
					return;
				}

				//获取保存在 Session 中的员工编号信息。
				iEmpID = int.Parse ((string)(Session["EmployeeID"]));

				//从数据库中获取员工的其他信息。
				Employee.GetEmployeeInfo(iEmpID, emp);

				//显示登录者的姓名。
				lblName.Text = emp.Name;

				//显示年假剩余小时数。
				lblALhours.Text = emp.ALhours.ToString();

				//设定“开始时间”日历控件的显示时间为第二天。
				cldStartDate.SelectedDate = DateTime.Now.AddDays(1.0);
            
				//设定“结束时间”日历控件的显示时间为第二天。
				cldEndDate.SelectedDate = DateTime.Now.AddDays(1.0);


				//显示审批者的名称,即部门经理,如果登录者为部门经理,则无需添加。
				if ( !emp.IsManager )
				{
					cmbApproverList.Items.Add(emp.ManagerName);
					cmbApproverList.Items[0].Value = emp.ManagerID.ToString();
				}

				//从数据库中获取总经理的员工编号。
				int iCEOID = 0;
				Employee.GetCEOInfo(ref iCEOID);

				//从数据库中获取总经理的其他信息。
				Employee empCEO = new Employee();
				Employee.GetEmployeeInfo(iCEOID, empCEO);

				//在审批者下拉框中添加总经理的姓名。
				cmbApproverList.Items.Add(empCEO.Name);
				cmbApproverList.Items[cmbApproverList.Items.Count - 1].Value = empCEO.EmployeeID.ToString();
            
				//审批者下拉框默认选中第一项。
				cmbApproverList.SelectedIndex = 0;

				//计算日历控件当月所包含的国定假日。
				ReCalculateHoliday();
			}
		}
		/// <summary>
		/// 该方法计算指定月份所包含的国定假日。
		/// </summary>
		/// <param name="e"></param>

		void ReCalculateHoliday()
		{
        
			//清空 alHolidayL 数组,该数组保存“开始时间”日历控件对应月份所包含的国定假日。
			alHolidayL.Clear();
        
			//在数据库中检索该月的国定假日,并将其保存在 alHolidayL 数组中。
			DBUtils.SubmitLvReq.GetHoliday(cldStartDate.SelectedDate, alHolidayL);
        
			//清空 alHolidayR 数组,该数组保存“结束时间”日历控件对应月份所包含的国定假日。
			alHolidayR.Clear();
        
			//在数据库中检索该月的国定假日,并将其保存在 alHolidayL 数组中。
			DBUtils.SubmitLvReq.GetHoliday(cldEndDate.SelectedDate, alHolidayR);
		}
		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.cldStartDate.DayRender += new System.Web.UI.WebControls.DayRenderEventHandler(this.cldStartDate_DayRender);
			this.cldStartDate.VisibleMonthChanged += new System.Web.UI.WebControls.MonthChangedEventHandler(this.cldStartDate_VisibleMonthChanged);
			this.cldStartDate.SelectionChanged += new System.EventHandler(this.cldStartDate_SelectionChanged);
			this.cldEndDate.DayRender += new System.Web.UI.WebControls.DayRenderEventHandler(this.cldEndDate_DayRender);
			this.cldEndDate.VisibleMonthChanged += new System.Web.UI.WebControls.MonthChangedEventHandler(this.cldEndDate_VisibleMonthChanged);
			this.cldEndDate.SelectionChanged += new System.EventHandler(this.cldEndDate_SelectionChanged);
			this.btnCalculate.Click += new System.EventHandler(this.btnCalculate_Click);
			this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion

		/// <summary>
		/// 该方法当网页生成“开始时间”日历控件的每一个单元格时自动调用。
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void cldStartDate_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
		{
			int iCount;

			//遍历 alHolidayL 数组中保存的每一个国定假日。
			for ( iCount = 0; iCount<= alHolidayL.Count - 1; iCount++)
			{
				if ( e.Day.Date.ToString("MM/dd") == ((DateTime)alHolidayL[iCount]).ToString("MM/dd") )
				{
					//如果当前单元格所对应的日期为国定假日,则以绿色粗体显示。
					e.Cell.BackColor = System.Drawing.Color.Green;
					e.Cell.Font.Bold = true;
				}
			}
		
		}
		/// <summary>
		/// 该方法当网页生成“结束时间”日历控件的每一个单元格时自动调用。
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void cldEndDate_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
		{
			int iCount;

			//遍历 alHolidayR 数组中保存的每一个国定假日。
			for ( iCount = 0; iCount<= alHolidayR.Count - 1; iCount++)
			{
				if ( e.Day.Date.ToString("MM/dd") == ((DateTime)alHolidayR[iCount]).ToString("MM/dd"))
				{
					//如果当前单元格所对应的日期为国定假日,则以绿色粗体显示。
					e.Cell.BackColor = System.Drawing.Color.Green;
					e.Cell.Font.Bold = true;
				}
			}
		
		}
		/// <summary>
		/// 当用户改变“结束时间”日历控件的当前月份时,该方法将重新设定日历控件的选中日期,并重新计算当前月份的国定假日。
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void cldEndDate_VisibleMonthChanged(object sender, System.Web.UI.WebControls.MonthChangedEventArgs e)
		{
			//重设“结束时间”日历控件的选中日期。
			cldEndDate.SelectedDate = e.NewDate;
        
			//如果月份为本月,则选中日期为第二天。
			if ( e.NewDate.Month == DateTime.Now.Month )
			{
				cldEndDate.SelectedDate = DateTime.Now.AddDays(1.0);
			}

			//计算日历控件当月所包含的国定假日。
			ReCalculateHoliday();
		
		}
		/// <summary>
		/// 当用户改变“开始时间”日历控件的当前月份时,该方法将重新设定日历控件的选中日期,并重新计算当前月份的国定假日。
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void cldStartDate_VisibleMonthChanged(object sender, System.Web.UI.WebControls.MonthChangedEventArgs e)
		{
			//重设“开始时间”日历控件的选中日期。
			cldStartDate.SelectedDate = e.NewDate;
        
			//如果月份为本月,则选中日期为第二天。
			if ( e.NewDate.Month == DateTime.Now.Month )
			{
				cldStartDate.SelectedDate = DateTime.Now.AddDays(1.0);
			}

			//计算日历控件当月所包含的国定假日。
			ReCalculateHoliday();
		
		}
		/// <summary>
		/// 当用户单击“计算时间”按钮时,该方法计算并显示用户请假的总小时数。
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		private void btnCalculate_Click(object sender, System.EventArgs e)
		{
			int iTotalHours;

			//调用函数 CalculateHours,计算用户请假的总小时数。
			iTotalHours = CalculateHours();
        
			if ( iTotalHours <= 0 )
			{
				//请假时间不正确,则显示出错信息并退出。
        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?