📄 submitotreq.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 DBUtils;
namespace BlueHill.SubmitOvertime
{
/// <summary>
/// SubmitOTReq 的摘要说明。
/// </summary>
public class SubmitOTReq : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label lblErrorMsg;
protected System.Web.UI.WebControls.Button btnSubmit;
protected System.Web.UI.WebControls.Button btnCalculate;
protected System.Web.UI.WebControls.Label lblTotalHours;
protected System.Web.UI.WebControls.TextBox txtReason;
protected System.Web.UI.WebControls.DropDownList cmbEndTime;
protected System.Web.UI.WebControls.DropDownList cmbStartTime;
protected System.Web.UI.WebControls.Calendar cldEndDate;
protected System.Web.UI.WebControls.Calendar cldStartDate;
protected System.Web.UI.WebControls.DropDownList cmbApproverList;
protected System.Web.UI.WebControls.RadioButtonList rdoOptionList;
protected System.Web.UI.WebControls.Label lblName;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//设置控件属性,获取员工信息
//调用ReCalculateHoliday方法,计算指定月份所包含的国定假日
//该过程调用 Employee.GetEmployeeInfo(iEmpID, emp) 函数,从数据库中获取员工的其他信息。
//该过程还调用 Employee.GetEmployeeInfo(iCEOID, empCEO) 函数,
if(!this.Page.IsPostBack)
{
//设置默认日期
this.cldStartDate.SelectedDate = System.DateTime.Today.AddDays(1);
this.cldEndDate.SelectedDate = System.DateTime.Today.AddDays(1);
#region //获取员工信息
//通过页面 Session 传值获取员工编号
int iEmpID = Convert.ToInt32(Session["EmployeeID"]);
Employee employee = new Employee();
Employee.GetEmployeeInfo(iEmpID,ref employee);
//在页面上显示员工信息
//员工姓名
this.lblName.Text = employee.Name;
if(employee.EmployeeID != employee.ManagerID)
{
//当前登录者不是总经理
//获取其经理的姓名及编号
string strManageName = employee.ManagerName;
string strManageID = employee.ManagerID.ToString();
//将其经理设为审批者的一项
System.Web.UI.WebControls.ListItem item = new ListItem(strManageName,strManageID);
//绑定审批者
if(employee.IsManager)
{
//登录者自己是部门经理,其经理即为总经理,则审批者只有总经理,绑定总经理
this.cmbApproverList.Items.Add(item);
//默认选中
this.cmbApproverList.SelectedIndex = 0;
}
else
{
//登录者是普通员工,绑定其部门经理和总经理
//绑定部门经理
this.cmbApproverList.Items.Add(item);
//默认选中部门经理
this.cmbApproverList.SelectedIndex = 0;
//获取总经理的信息,通过其经理的编号来获取,即获取经理的经理信息
//创建一个部门经理对象
Employee DeptCEOemployee = new Employee();
Employee.GetEmployeeInfo(employee.ManagerID,ref DeptCEOemployee);
//获取总经理信息
string strCEOName = DeptCEOemployee.ManagerName;
string strCEOID = DeptCEOemployee.ManagerID.ToString();
//将总经理加入到审批者选项中
System.Web.UI.WebControls.ListItem CEOItem = new ListItem(strCEOName,strCEOID);
this.cmbApproverList.Items.Add(CEOItem);
}
}
else
{
//当前登录者为总经理
}
#endregion
//初使化选定开始日期的加班时间下拉框
this.BindStartTimeList();
//初使化选定结束日期的加班时间下拉框
this.BindEndTimeList();
}
}
/// <summary>
/// 根据选定的开始日期,绑定该日可以申请加班的时间段
/// </summary>
private void BindStartTimeList()
{
//创建一个保存可加班时间段的数组
string[] arTime;
//获取选定的开始日期
DateTime dtStart = this.cldStartDate.SelectedDate;
//判断该日是否为节假日
bool IsHoliday = this.IsHoliday(dtStart);
if(IsHoliday)
{
//该日是节假日,开始时间有9:00—17:00等9个选项,默认起始时间是9:00
//设置可以申请加班的时间段数组
arTime = new string[9]{"9:00","10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00"};
}
else
{
//该日是工作日,开始的时间有0:00—8:00和18:00—23:00等15个可选项,默认起始时间是0:00
//设置可以申请加班的时间段数组
arTime = new string[15]{"0:00","1:00","2:00","3:00","4:00","5:00","6:00","7:00","8:00","18:00","19:00","20:00","21:00","22:00","23:00"};
}
//清除历史记录
this.cmbStartTime.Items.Clear();
//绑定可加班时间段
for(int i=0;i<arTime.Length;i++)
{
//将可加班时间段绑定到下拉框中
System.Web.UI.WebControls.ListItem item = new ListItem(arTime[i],i.ToString());
this.cmbStartTime.Items.Add(item);
}
//设置默认起始时间
this.cmbStartTime.SelectedIndex = 0;
}
/// <summary>
/// 根据选定的结束日期,绑定该日可以申请加班的时间段
/// </summary>
private void BindEndTimeList()
{
//创建一个保存可加班时间段的数组
string[] arTime;
//获取选定的开始日期
DateTime dtEnd = this.cldEndDate.SelectedDate;
//判断该日是否为节假日
bool IsHoliday = this.IsHoliday(dtEnd);
if(IsHoliday)
{
//该日是节假日时,结束的时间有10:00—18:00等9个选项,默认结束时间是18:00
//设置可以申请加班的时间段数组
arTime = new string[9]{"10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00","18:00"};
}
else
{
//该日是工作日时,结束时间有0:00—9:00和19:00-23:00等15个可选项,默认结束时间是0:00
//设置可以申请加班的时间段数组
arTime = new string[15]{"1:00","2:00","3:00","4:00","5:00","6:00","7:00","8:00","9:00","19:00","20:00","21:00","22:00","23:00","24:00"};
}
//清除历史记录
this.cmbEndTime.Items.Clear();
//绑定可加班时间段
for(int i=0;i<arTime.Length;i++)
{
//将可加班时间段绑定到下拉框中
System.Web.UI.WebControls.ListItem item = new ListItem(arTime[i],(i+1).ToString());
this.cmbEndTime.Items.Add(item);
}
//设置默认结束时间
if(IsHoliday)
{
this.cmbEndTime.SelectedIndex = 8;
}
else
{
this.cmbEndTime.SelectedIndex = 14;
}
}
#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
//存储开始日期所以在月的国定假日
private ArrayList alHolidayL = new ArrayList();
//存储结束日期所以在月的国定假日
private ArrayList alHolidayR = new ArrayList();
/// <summary>
/// 计算指定月份所包含的国定假日
/// </summary>
private void ReCalculateHoliday()
{
//该过程调用 SubmitLvReq.GetHoliday(cldStartDate.SelectedDate, alHolidayL)
//和DBUtils.SubmitLvReq.GetHoliday(cldEndDate.SelectedDate, alHolidayR) 函数,
//在数据库中检索该月的国定假日。
//查询开始时间 月的国定假日
DBUtils.SubmitLvReq.GetHoliday(cldStartDate.SelectedDate,ref alHolidayL);
//查询结束时间 月的国定假日
DBUtils.SubmitLvReq.GetHoliday(cldEndDate.SelectedDate,ref alHolidayR);
}
/// <summary>
/// 当网页生成“开始时间”日历控件的每一个单元格时自动调用
/// </summary>
/// <param name="sender">发送该事件的对象</param>
/// <param name="e">DayRender控件事件的基本参数</param>
private void cldStartDate_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
{
ArrayList alHolidayL = new ArrayList();
DBUtils.SubmitLvReq.GetHoliday(cldStartDate.SelectedDate,ref alHolidayL);
if(alHolidayL.Count != 0)
{
//数据库查询成功,且该月存在国定假日
foreach(DateTime dt in alHolidayL)
{
if(e.Day.Date.Date == dt.Date)
{
e.Cell.BackColor = System.Drawing.Color.DarkGreen;
e.Cell.Font.Bold = true;
break;
}
}
}
}
/// <summary>
/// 当网页生成“结束时间”日历控件的每一个单元格时自动调用
/// </summary>
/// <param name="sender">发送该事件的对象</param>
/// <param name="e">DayRender控件事件的基本参数</param>
private void cldEndDate_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
{
ArrayList alHolidayR = new ArrayList();
DBUtils.SubmitLvReq.GetHoliday(cldEndDate.SelectedDate,ref alHolidayR);
if(alHolidayR.Count != 0)
{
//数据库查询成功,且该月存在国定假日
foreach(DateTime dt in alHolidayR)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -