📄 viewattendance.aspx.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 + -