departmentrecordgather.aspx.cs

来自「一个小型的人事管理系统」· CS 代码 · 共 344 行

CS
344
字号
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 DepartmentRecordGather : System.Web.UI.Page
{
    private static string ConnString = ConfigurationManager.AppSettings["SQLCONNECTION"];
    private static int Employee_ID, Overtime_ID;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
       //     Session["LoginName"] = "hangwang";
       //     Session["DeptID"] = "5";
       //     Session["EmployeeLevel"] = "2";
            ///ddlSelectDeptShow();    ///部门下拉框
            ///GatherResultShow(0);
            FirstShow();
        }
    }
    protected void GatherResultShow(int WhichRadioButton)///显示汇总表
    {
        string cmdText, WhereText="";
        string StartDate, EndDate;

        StartDate = ChangeDateFormat(tbxStartTiem.Text.Trim());
        EndDate =ChangeDateFormat(tbxEndTime.Text.Trim());
        StartDate += " 0:00:00";
        EndDate += " 0:00:00";

        switch (WhichRadioButton)
        {
            case 1: WhereText = " AND (tblOvertime.Type=1) "; break;
            case 2: WhereText = " AND (tblOvertime.Type=2) "; break;
            default: break;
        }

        SqlConnection myConn = new SqlConnection(ConnString);
        cmdText = "SELECT tblOvertime.EmployeeID,tblEmployee.Name AS EmployeeName,COUNT(tblOvertime.EmployeeID) as OvertimeNum,SUM(Hours) as WholeHours ";
        cmdText += "FROM tblOvertime,tblEmployee ";
        cmdText += "WHERE tblOvertime.EmployeeID=tblEmployee.EmployeeID ";
        cmdText += "AND (tblOvertime.StartTime>='" + StartDate + "' AND tblOvertime.EndTime<='" + EndDate + "') ";///输入的如期格式必须是符合要求的
        cmdText += WhereText;
        if (Session["EmployeeLevel"].ToString() == "3") ///如果是总经理登录,那么……
        {
            cmdText += "AND (tblEmployee.DeptID=" + ddlSelectDepartment.SelectedValue + ") ";
        }
        else///如果不是总经理登录,那么……
        {
            cmdText += "AND (tblEmployee.DeptID=" + Session["DeptID"].ToString() + ") ";
        }
        cmdText += "GROUP BY tblOvertime.EmployeeID,tblEmployee.Name";

        SqlCommand myComm = new SqlCommand(cmdText, myConn);
        myConn.Open();

        SqlDataReader Dr = myComm.ExecuteReader();
        gvwGatherResult.DataSource = Dr;
        gvwGatherResult.DataBind();
        if (gvwGatherResult.Rows.Count == 0)
        {
            Response.Write("没有相应的加班情况!");
        }
        Dr.Dispose();
        myConn.Close();
    }

    protected void DetailsShow(int EmployeeID)///显示某员工加班记录
    {
        string cmdText;
        SqlConnection myConn = new SqlConnection(ConnString);
        cmdText = "SELECT OvertimeID,StartTime,EndTime,SubmitTime,Description,Status,Hours " +
                    "FROM tblOvertime,tblOvertimeType " +
                    "WHERE EmployeeID = " + EmployeeID.ToString() +
                    " AND tblOvertime.Type=tblOvertimeType.Type ";
        SqlCommand myComm = new SqlCommand(cmdText, myConn);
        myConn.Open();

        SqlDataReader Dr = myComm.ExecuteReader();
        gvwDetails.DataSource = Dr;
        gvwDetails.DataBind();
        if (gvwDetails.Rows.Count == 0)
        {
            Response.Write("没有该员工的加班记录!");
        }
        Dr.Dispose();
        myConn.Close();
    }

    protected void gvwGatherResult_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Employee_ID = Convert.ToInt32(e.CommandArgument.ToString());
        gvwGatherResult.Visible = false;
        gvwDetails.Visible = true;
        btnBack.Visible = true;
        DetailsShow(Employee_ID);
    }

    protected int WhichRadio()///根据不同的radiobutton,返回不同的值
    {
        if (rbnShowAll.Checked == true)
            return 0;
        if (rbnOnlyShowType1.Checked == true)
            return 1;
        if (rbnOnlyShowType2.Checked == true)
            return 2;
        return -1;
    }

    protected void ddlSelectDeptShow()///总经理登录时显示下拉框
    {
        string cmdText;
        SqlConnection myConn = new SqlConnection(ConnString);
        cmdText = "SELECT * FROM tblDepartment WHERE DeptID <> 84";

        SqlCommand myComm = new SqlCommand(cmdText, myConn);
        myConn.Open();

        SqlDataReader Dr = myComm.ExecuteReader();
        ddlSelectDepartment.DataSource = Dr;
        ddlSelectDepartment.DataTextField = "DeptName";
        ddlSelectDepartment.DataValueField = "DeptID";
        ///ddlSelectDepartment
        ddlSelectDepartment.DataBind();
        ddlSelectDepartment.SelectedValue = "3";///
        Dr.Close();
        myConn.Close();
    }
/*
    private int ddlSelectDeptChoice()///貌似没什么用了
    {///如果数据库有改动(DeptID),那么这一段就有问题
        switch (ddlSelectDepartment.SelectedIndex)
        {
            case 0: return 3;
            case 1: return 5;
            case 2: return 7;
            case 3: return 9;
            case 4: return 20;
            case 5: return 78;
            case 6: return 80;
            default: return -1;
        }
    }
*/
    protected void btnSearch_Click(object sender, EventArgs e)///处理搜索按钮
    {
        gvwGatherResult.Visible = true;
        gvwDetails.Visible = false;
        btnBack.Visible = false;
        pnlApprover.Visible = false;
        pnlReason.Visible = false;
        pnlDenyReason.Visible = false;
        if (IsPermitFormat(tbxStartTiem.Text.Trim()) && IsPermitFormat(tbxEndTime.Text.Trim()))
        {
            GatherResultShow(WhichRadio());
        }
        else
        {
            gvwGatherResult.Visible = false;
            Response.Write("输入的日期格式错误!请输入形如“1900/1/1”的日期。");
            return;
        }
    }

    protected string ChangeDateFormat(string Time)///该函数将形如2007/10/12的日期转换为10/12/2007
    {///Time格式样例2007/10/12
        char[] Change = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' };
        int i, j;
        for (i = 5; Time[i] != '/'; i++)
        {
            Change[i - 5] = Time[i];
        }
        Change[i - 5] = '/';
        for (i++; i<Time.Length; i++)
        {
            Change[i - 5] = Time[i];
        }
        Change[i - 5] = '/';
        i++;
        for (j = 0; Time[j] != '/'; j++)
        {
            Change[i-5] = Time[j];
            i++;
        }
        ///Change[i - 5] = '\0';///竟然就把\和0给赋值过去,使得back变成“2007/10/12\0”这样的
        string back = new string(Change);
        return back;
    }
    
    protected bool IsPermitFormat(string Time)///该函数判断输入的日期格式是否符合要求,符合则返回TRUE
    {
        char [] Change = {' ', ' ', ' ', ' '};
        int i, j, k;
        for (i = 0; i < Time.Length; i++)
        {///看看Time串里有没有不是数字或“/”的字符
            if ( (Time[i] < '0' || Time[i] > '9') && Time[i] != '/')
                return false;
        }
        for (i = 5, j=0; Time[i] != '/'; i++)
        {
            Change[j] = Time[i];
            j++;
        }
        string m = new string(Change);///截取出月份
        if (m[0] == ' ') return false;

        ///Change[0] = ' ';
        for (k = 0; k < 4; k++)///清空Change[]
        {
            Change[k] = ' ';
        }
        for (i++, j=0; i < Time.Length; i++)
        {
            Change[j] = Time[i];
            j++;
        }
        string d = new string(Change);///截取出日
        if (d[0] == ' ') return false;

        ///Change[0] = ' ';
        for (k = 0; k < 4; k++)///清空Change[]
        {
            Change[k] = ' ';
        }
        for (j = 0; Time[j] != '/'; j++)
        {
            Change[j] = Time[j];
        }
        string y = new string(Change);///截取出年
        if (y[0] == ' ') return false;

        if (Convert.ToInt32(y) < 1900 || int.Parse(y) > 9999) return false;
        if (int.Parse(m) < 1 || int.Parse(m) > 12) return false;
        if (int.Parse(d) < 1 || int.Parse(d) > 31) return false;
        return true;
    }

    protected void FirstShow()///点击该页面后的显示
    {
        if (Session["EmployeeLevel"].ToString() == "1")
        {
            lblEmploeePurview.Visible = true;///普通员工能看到的
            pnlSelectItem.Visible = false;
            pnlSelectDepartment.Visible = false;
            btnSearch.Visible = false;
            gvwGatherResult.Visible = false;
            pnlApprover.Visible = false;    ///三个标签显示
            pnlReason.Visible = false;      ///员工加班
            pnlDenyReason.Visible = false;  ///记录明细
            gvwDetails.Visible = false;
            btnBack.Visible = false;
            return;
        }
        DateTime Dt = DateTime.Today;///设置文本框默认显示
        int y = Dt.Year;
        int m = Dt.Month - 1;
        int d = Dt.Day;
        tbxStartTiem.Text = y.ToString() + "/" + m.ToString() + "/" + d.ToString();
        d += 1;
        m += 1;
        tbxEndTime.Text = y.ToString() + "/" + m.ToString() + "/" + d.ToString(); 

        if (Convert.ToString(Session["EmployeeLevel"]) == "2")
        {
            lblEmploeePurview.Visible = false;
            pnlSelectItem.Visible = true;///经理能看到的
            pnlSelectDepartment.Visible = false;
            btnSearch.Visible = true;///经理能看到的
            gvwGatherResult.Visible = false;
            pnlApprover.Visible = false;
            pnlReason.Visible = false;
            pnlDenyReason.Visible = false;
            gvwDetails.Visible = false;
            btnBack.Visible = false;
            return;
        }
        if (Session["EmployeeLevel"].ToString() == "3")
        {
            lblEmploeePurview.Visible = false;
            pnlSelectItem.Visible = true;
            pnlSelectDepartment.Visible = true;///总经理能看到的
            btnSearch.Visible = true;
            gvwGatherResult.Visible = false;
            pnlApprover.Visible = false;
            pnlReason.Visible = false;
            pnlDenyReason.Visible = false;
            gvwDetails.Visible = false;
            btnBack.Visible = false;
            ddlSelectDeptShow();
            return;
        }
    }

    protected void btnBack_Click(object sender, EventArgs e)
    {
        gvwDetails.Visible = false;
        btnBack.Visible = false;
        gvwGatherResult.Visible = true;
        pnlApprover.Visible = false;
        pnlReason.Visible = false;
        pnlDenyReason.Visible = false;
        GatherResultShow(WhichRadio());
    }

    protected void EmployeeOvertimeDetails(int OvertimeID)///员工加班记录明细
    {
        string cmdText;
        SqlConnection myConn = new SqlConnection(ConnString);
        cmdText = "SELECT Name AS Approver,Reason,DenyReason,Status FROM tblEmployee,tblOvertime WHERE tblEmployee.EmployeeID=tblOvertime.ApproverID AND OvertimeID=";
        cmdText += OvertimeID.ToString();
        SqlCommand myComm = new SqlCommand(cmdText, myConn);
        myConn.Open();

        SqlDataReader Dr = myComm.ExecuteReader();
        Dr.Read();
        lblApprover.Text = "审批者:" + Dr["Approver"].ToString();
        lblReason.Text = "加班事由:" + Dr["Reason"].ToString();
        if (Dr["Status"].ToString() == "已否决       ")     ///“已否决”后面有七个空格,没有它们的话就会出错(if条件永远为假)
            lblDenyReason.Text = "否决理由:" + Dr["DenyReason"].ToString();
        else pnlDenyReason.Visible = false;

        Dr.Dispose();
        myConn.Close();
    }

    protected void gvwDetails_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Overtime_ID = Convert.ToInt32(e.CommandArgument.ToString());
        
        pnlApprover.Visible = true;
        pnlReason.Visible = true;
        pnlDenyReason.Visible = true;
        EmployeeOvertimeDetails(Overtime_ID);
    }
}

⌨️ 快捷键说明

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