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

📄 viewattendance.aspx.cs

📁 办公室系统包括上下班打卡
💻 CS
字号:
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.SqlClient;

public partial class Platform_ViewAttendance : System.Web.UI.Page
{
	protected void Page_Load(object sender,EventArgs e)
	{	///判断用户是否登录
		UserSessionValue usv = (UserSessionValue)SessionKeyValue.GetUserSession(Session);
		if(usv == null)
		{   ///返回到上一个页面
			Response.Write("<script>history.back()</script>");
			///跳转到登录页面
			Server.Transfer("~/Common/UserLogin.aspx");
			return;
		}
		///显示考勤信息
		if(!Page.IsPostBack)
		{   ///初始化年月信息
			InitYearMonth();
			///显示当前月的考勤信息
			BindAttendanceData();
			///设置上下班的状态
			BindCurrentAttendanceData();
		}	
	}

	private void InitYearMonth()
	{
		ddlYear.Items.Clear();
		ddlMonth.Items.Clear();
		///添加年份
		for(int i = 0; i < 10; i++)
		{
			ddlYear.Items.Add(new ListItem(
				(2006 + i).ToString(),(2006 + i).ToString()));
		}
		///添加月份
		for(int i = 0; i < 12; i++)
		{
			ddlMonth.Items.Add(new ListItem(
				(i + 1).ToString(),(i + 1).ToString()));
		}
		///设置初始化的值
		DateTime dateTime = DateTime.Now;
		SystemOperation.SetListSelected(ddlYear,dateTime.Year.ToString());
		SystemOperation.SetListSelected(ddlMonth,dateTime.Month.ToString());
	}
	private void BindCurrentAttendanceData()
	{   ///获取用户登录信息
		UserSessionValue usv = (UserSessionValue)SessionKeyValue.GetUserSession(Session);
		if(usv == null)
		{
			return;
		}
		///根据当前日期获取当天的考勤信息
		Attendance attendance = new Attendance();
		SqlDataReader dr = attendance.GetCurrentAttendance(
			Int32.Parse(usv.UserID),DateTime.Now);
		if(dr == null)
		{
			return;
		}
		if(dr.Read())
		{
			//NormalDuty   = 0,    ///正常上下班
			//OnDuty       = 1,    ///正常上班状态
			//NoOnDuty     = 2,    ///没有上班
			//OffDuty      = 3,    ///正常下班状态
			//NoOffDuty    = 4,    ///没有下班
			//NoNormalDuty = 5,    ///没有正常上下班
			//NoExplain    = 6,    ///没有添加解释说明
			//ExistExplain = 7,    ///已经添加了解释说明
			//Unknown      = 8     ///未知状态
			AttendanceStatus status = (AttendanceStatus)byte.Parse(dr["Status"].ToString());
			if(status == AttendanceStatus.NoOnDuty || status == AttendanceStatus.NoNormalDuty)
			{   ///还没有上班
				btnOnDuty.Enabled = true;
			}
			if(status == AttendanceStatus.OnDuty || status == AttendanceStatus.NoOffDuty)
			{   ///还没有下班
				btnOffDuty.Enabled = true;
			}			
		}
		else
		{   ///还没有上班,也没有下班,即不存在记录
			btnOnDuty.Enabled = true;
		}
		dr.Close();
	}

	private void BindAttendanceData()
	{
		string date = ddlYear.SelectedValue + "-" + ddlMonth.SelectedValue
			+ "-01";
		DateTime attendanceDate = DateTime.Parse(date);

	    ///获取用户登录信息
		UserSessionValue usv = (UserSessionValue)SessionKeyValue.GetUserSession(Session);
		if(usv == null)
		{
			return;
		}
		///获取数据
		Attendance attendance = new Attendance();
		DataSet ds = attendance.GetAttendanceByEmployeeAndDate(
			Int32.Parse(usv.UserID),attendanceDate);
		if(ds.Tables.Count <= 0)
		{
			return;
		}
		///创建表格的列
		DataTable dt = new DataTable();
		///创建日期列
		dt.Columns.Add(new DataColumn("Date",typeof(DateTime)));
		foreach(DataColumn column in ds.Tables[0].Columns)
		{
			dt.Columns.Add(new DataColumn(column.ColumnName,column.DataType));
		}
		///填充数据
		///增加一个月,获取当前选择月的天数
		DateTime nextMonth = attendanceDate.AddMonths(1);
		TimeSpan ts = nextMonth.Subtract(attendanceDate);
		for(int i = 0; i < ts.Days; i++)
		{   ///添加每月包含天的数据
			DataRow row = dt.NewRow();
			row["Date"] = attendanceDate.AddDays(i);
			dt.Rows.Add(row);
		}
		foreach(DataRow row in ds.Tables[0].Rows)
		{   ///填充用户已经考勤的数据
			DateTime rowDate = DateTime.Parse(row["CurrentDate"].ToString());
			///计算时间差,从而计算出行的索引
			TimeSpan tsrow = rowDate.Subtract(attendanceDate);
			if(tsrow.Days < 0)
			{
				return;
			}
			foreach(DataColumn column in ds.Tables[0].Columns)
			{   ///填充每一列的数据
				dt.Rows[tsrow.Days][column.ColumnName] = row[column.ColumnName];
			}
		}

		///绑定控件的数据,并显示数据
		gvAttendance.DataSource = dt;
		gvAttendance.DataBind();
	}

	protected string FormatStatus(string status)
	{
		if(SystemOperation.StringNullChecked(status) == true)
		{
			return ("deletes.gif");
		}
		switch(status)
		{   
			case "0": return "pic.gif";      ///正常上下班  
			case "1": return "up.gif";       ///正常上班
			case "2": return "attch.gif";    ///没有上班
			case "3": return "down.gif";     ///正常下班
			case "4": return "url.gif";      ///没有下班
			case "5": return "deletes.gif";  ///没有正常上下班
			case "6": return "delete.gif";   ///没有添加解释说明
			case "7": return "content.gif";  ///已经添加了解释说明
			default:  return "unknown.gif";  ///未知状态
		}		
	}

	//NormalDuty   = 0,    ///正常上下班 
	//OnDuty       = 1,    ///正常上班状态
	//NoOnDuty     = 2,    ///没有上班
	//OffDuty      = 3,    ///正常下班状态
	//NoOffDuty    = 4,    ///没有下班
	//NoNormalDuty = 5,    ///没有正常上下班
	//NoExplain    = 6,    ///没有添加解释说明
	//ExistExplain = 7,    ///已经添加了解释说明
	//Unknown      = 8     ///未知状态

	/// <summary>
	/// 根据状态设置添加按钮的可用性
	/// </summary>
	/// <param name="status"></param>
	/// <returns></returns>
	protected bool FormatAddVisibleByStatus(string status)
	{
		if(SystemOperation.StringNullChecked(status) == true)
		{
			return true;
		}
		if(status == ((byte)AttendanceStatus.NoOnDuty).ToString()
			|| status == ((byte)AttendanceStatus.NoOffDuty).ToString()
			|| status == ((byte)AttendanceStatus.NoExplain).ToString()
			|| status == ((byte)AttendanceStatus.NoNormalDuty).ToString())
		{
			return true;
		}
		return false;
	}
	/// <summary>
	/// 根据状态设置更新按钮的可用性
	/// </summary>
	/// <param name="status"></param>
	/// <returns></returns>
	protected bool FormatUpdateVisibleByStatus(string status)
	{
		if(SystemOperation.StringNullChecked(status) == true)
		{
			return false;
		}
		if(status == ((byte)AttendanceStatus.ExistExplain).ToString())
		{
			return true;
		}
		return false;
	}

	protected string FormatDesn(string desn)
	{
		if(desn.Length > 28)
		{
			return (desn.Substring(0,25) + "...");
		}
		return (desn);
	}

	protected void gvAttendance_RowDataBound(object sender,GridViewRowEventArgs e)
	{   ///添加删除按钮的确认对话框
		ImageButton deleteBtn = (ImageButton)e.Row.FindControl("DeleteBtn");
		if(deleteBtn != null)
		{
			deleteBtn.Attributes.Add("onclick","return confirm('你确定要删除所选择的短信息吗?');");
		}
	}
	protected void gvAttendance_RowCommand(object sender,GridViewCommandEventArgs e)
	{
		if(e.CommandName == "add")
		{   ///跳转到添加页面
			Server.Transfer("~/Platform/AddAttendanceExplain.aspx"
				+ e.CommandArgument.ToString());
		}
		if(e.CommandName == "update")
		{   ///跳转到修改页面
			Server.Transfer("~/Platform/UpdateAttendanceExplain.aspx"
				+ e.CommandArgument.ToString());
		}
		if(e.CommandName == "delete")
		{    ///执行删除操作
			Attendance attendance = new Attendance();
			attendance.DeleteAttendanceExplain(Int32.Parse(e.CommandArgument.ToString()));
			
			///重新绑定数据
			BindAttendanceData();
		}
	}
	protected void gvAttendance_RowDeleting(object sender,GridViewDeleteEventArgs e)
	{
		///
	}	
	protected void ddlYear_SelectedIndexChanged(object sender,EventArgs e)
	{
		BindAttendanceData();
	}
	protected void gvAttendance_RowUpdating(object sender,GridViewUpdateEventArgs e)
	{
		///
	}
	protected void btnDuty_Click(object sender,EventArgs e)
	{   ///获取用户登录信息
		UserSessionValue usv = (UserSessionValue)SessionKeyValue.GetUserSession(Session);
		if(usv == null)
		{
			return;
		}
		string commandName = ((Button)sender).CommandName;
		if(SystemOperation.StringNullChecked(commandName) == true)
		{
			return;
		}
		Attendance attendance = new Attendance();
		if(commandName == "on")
		{   ///执行上班操作
			if(attendance.AddOnAttendance(
				DateTime.Now,
				DateTime.Now,
				Int32.Parse(usv.UserID)) > 0)
			{   ///显示提示信息
				SystemOperation.OpenDialog(Response,
					DateTime.Now.ToShortDateString() + ":你已经上班了……");
				///上班之后,打开下班控件,并关闭上班控件
				btnOffDuty.Enabled = true;
				btnOnDuty.Enabled = false;

				///重新显示考勤信息
				BindAttendanceData();
			}
			return;
		}
		if(commandName == "off")
		{   ///执行下班操作
			if(attendance.AddOffAttendance(
				DateTime.Now,
				DateTime.Now,
				Int32.Parse(usv.UserID)) > 0)
			{   ///显示提示信息
				SystemOperation.OpenDialog(Response,
					DateTime.Now.ToShortDateString() + ":你已经下班了……");
				///关闭上班按钮
				btnOffDuty.Enabled = false;

				///重新显示考勤信息
				BindAttendanceData();
			}
			return;
		}
	}
}

⌨️ 快捷键说明

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