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

📄 employeerecordquery.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 EmployeeRecordQuery : System.Web.UI.Page
{
    private static string ConnString = ConfigurationManager.AppSettings["SQLCONNECTION"];
    private static int Overtime_ID;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
    //        Session["LoginName"] = "aaaaa";///待删除
    //        Session["DeptID"] = "3";
    //        Session["EmployeeLevel"] = "3";
            FirstShow();
            ddlSelectDeptShow();
            ddlSelectEmployeeShow();
        }
    }
    protected void FirstShow()
    {
        if (Session["EmployeeLevel"].ToString() == "1")
        {
            lblEmploeePurview.Visible = true;
            pnlSelectDepartment.Visible = false;
            pnlSelectItem.Visible = false;
            pnlApprover.Visible = false;    ///三个标签显示
            pnlReason.Visible = false;      ///员工加班
            pnlDenyReason.Visible = false;  ///记录明细
            gvwDetails.Visible = false;
            btnBack.Visible = false;
            NoRecord.Visible = false;
            return;
        }
        DateTime Dt = DateTime.Today;///设置文本框默认显示
        int y = Dt.Year;
        int m = Dt.Month - 1;
        int d = Dt.Day;
        tbxStartTime.Text = y.ToString() + "/" + m.ToString() + "/" + d.ToString();
        d += 1;
        m += 1;
        tbxEndTime.Text = y.ToString() + "/" + m.ToString() + "/" + d.ToString();
        if (Session["EmployeeLevel"].ToString() == "2")
        {
            lblEmploeePurview.Visible = false;
            pnlSelectDepartment.Visible = false;
            pnlSelectItem.Visible = true;
            pnlApprover.Visible = false;    ///三个标签显示
            pnlReason.Visible = false;      ///员工加班
            pnlDenyReason.Visible = false;  ///记录明细
            gvwDetails.Visible = false;
            btnBack.Visible = false;
            NoRecord.Visible = false;
            return;
        }
        if (Session["EmployeeLevel"].ToString() == "3")
        {
            lblEmploeePurview.Visible = false;
            pnlSelectDepartment.Visible = true;
            pnlSelectItem.Visible = true;
            pnlApprover.Visible = false;    ///三个标签显示
            pnlReason.Visible = false;      ///员工加班
            pnlDenyReason.Visible = false;  ///记录明细
            gvwDetails.Visible = false;
            btnBack.Visible = false;
            NoRecord.Visible = false;
            return;
        }
    }

    protected void ddlSelectDeptShow()///部门下拉框显示
    {
        string cmdText;
        SqlConnection myConn = new SqlConnection(ConnString);
        cmdText = "SELECT * FROM tblDepartment WHERE DeptID <> 84";///84号是总经理的ID

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

        SqlDataReader Dr = myComm.ExecuteReader();
        ddlSelectDepartment.DataSource = Dr;
        ddlSelectDepartment.DataTextField = "DeptName";
        ddlSelectDepartment.DataValueField = "DeptID";
        ddlSelectDepartment.DataBind();
        ddlSelectDepartment.SelectedIndex = 0;
        ddlSelectDepartment.SelectedValue = "3";///3号代表人事部,此句保证默认显示人事部
        
        Dr.Dispose();
        myConn.Close();
    }

    protected void ddlSelectEmployeeShow()///某部门员工下拉框显示
    {
        string cmdText, cmdTextsm;
        SqlConnection myConn = new SqlConnection(ConnString);
        cmdText = "SELECT EmployeeID,Name AS EmployeeName FROM tblEmployee WHERE DeptID =" + ddlSelectDepartment.SelectedValue;
        SqlCommand myComm = new SqlCommand(cmdText, myConn);
        myConn.Open();

        SqlDataReader Dr = myComm.ExecuteReader();
        
        ddlSelectEmployee.DataSource = Dr;
        ddlSelectEmployee.DataTextField = "EmployeeName";
        ddlSelectEmployee.DataValueField = "EmployeeID";
        ddlSelectEmployee.DataBind();
        Dr.Dispose();

        cmdTextsm = "SELECT EmployeeID,Name FROM tblEmployee WHERE DeptID =" + ddlSelectDepartment.SelectedValue + " AND EmployeeLevel = 2";
        SqlCommand SearchManager = new SqlCommand(cmdTextsm, myConn);
        SqlDataReader Drsm = SearchManager.ExecuteReader();///搜一下该部门的经理
        ///ddlSelectEmployee.SelectedIndex = 0;
        Drsm.Read();
        ddlSelectEmployee.SelectedValue = Drsm["EmployeeID"].ToString();///设置员工下拉框默认显示
        
        
        Drsm.Dispose();
        myConn.Close();
    }

    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 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 bool IsShorter(string StartTime, string EndTime)
    {
        DateTime StartDt, EndDt;
        if (IsPermitFormat(StartTime) && IsPermitFormat(EndTime))
        {
            StartDt = DateTime.Parse(ChangeDateFormat(StartTime));
            EndDt = DateTime.Parse(ChangeDateFormat(EndTime));
            if (StartDt < EndDt)
                return true;
            else return false;
        }
        else return false;
    }

    protected void DetailsShow(int WhichRadioButton)///显示某员工加班记录
    {
        string cmdText, WhereText = "";
        string StartDate, EndDate;

        StartDate = ChangeDateFormat(tbxStartTime.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 OvertimeID,StartTime,EndTime,SubmitTime,Description,Status,Hours " +
                    "FROM tblOvertime,tblOvertimeType " +
                    "WHERE EmployeeID = " + ddlSelectEmployee.SelectedValue +
                    "AND (tblOvertime.StartTime>='" + StartDate + "' AND tblOvertime.EndTime<='" + EndDate + "') " +
                    WhereText +
                    " 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)
        {
            NoRecord.Visible = true;
            btnBack.Visible = false;
        }
        Dr.Dispose();
        myConn.Close();
    }

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        gvwDetails.Visible = true;
        pnlApprover.Visible = false;
        pnlDenyReason.Visible = false;
        pnlReason.Visible = false;
        btnBack.Visible = true;
        NoRecord.Visible = false;
        if (IsShorter(tbxStartTime.Text.Trim(), tbxEndTime.Text.Trim()))
        {
            DetailsShow(WhichRadio());
        }
        else
        {
            gvwDetails.Visible = false;
            btnBack.Visible = false;
            Response.Write("输入的日期格式错误!请输入形如“1900/1/1”的日期。");
            return;
        }
    }

    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);
    }

    protected void ddlSelectDepartment_SelectIndexChanged(object sender, EventArgs e)
    {
        ddlSelectEmployeeShow();
        gvwDetails.Visible = false;
        pnlApprover.Visible = false;
        pnlDenyReason.Visible = false;
        pnlReason.Visible = false;
        btnBack.Visible = false;
        NoRecord.Visible = false;
    }
    protected void ddlSelectEmployee_SelectIndexChanged(object sender, EventArgs e)
    {
        gvwDetails.Visible = false;
        pnlApprover.Visible = false;
        pnlDenyReason.Visible = false;
        pnlReason.Visible = false;
        btnBack.Visible = false;
        NoRecord.Visible = false;
    }
    protected void btnBack_Click(object sender, EventArgs e)
    {
        gvwDetails.Visible = false;
        pnlApprover.Visible = false;
        pnlDenyReason.Visible = false;
        pnlReason.Visible = false;
        btnBack.Visible = false;
        NoRecord.Visible = false;
    }
}

⌨️ 快捷键说明

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