📄 showdetail.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.Performance
{
/// <summary>
/// ShowDetail 的摘要说明。
/// </summary>
public class ShowDetail : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Panel pnlPageFix;
protected System.Web.UI.WebControls.Label lblIsManager;
protected System.Web.UI.WebControls.Label lblPerformID;
protected System.Web.UI.WebControls.Label lblEmpID;
protected System.Web.UI.WebControls.Label lblYear;
protected System.Web.UI.WebControls.Label lblSeason;
protected System.Web.UI.WebControls.Label lblPerformItemID;
protected System.Web.UI.WebControls.Label lblOrgSelfScore;
protected System.Web.UI.WebControls.Label lblOrgReviewScore;
protected System.Web.UI.WebControls.Label lblNoLast;
protected System.Web.UI.WebControls.Label lblPerformStatusText;
protected System.Web.UI.WebControls.Label lblPerformStatus;
protected System.Web.UI.WebControls.Panel pnlStatus;
protected System.Web.UI.WebControls.Label lblLastObject;
protected System.Web.UI.WebControls.DataGrid grdLast;
protected System.Web.UI.WebControls.Label lblSelfComment;
protected System.Web.UI.WebControls.TextBox txtSelfComment;
protected System.Web.UI.WebControls.Label lblReviewComment;
protected System.Web.UI.WebControls.TextBox txtReviewComment;
protected System.Web.UI.WebControls.Label lblSelfScore;
protected System.Web.UI.WebControls.DropDownList cmbSelfScore;
protected System.Web.UI.WebControls.Label lblReviewScore;
protected System.Web.UI.WebControls.DropDownList cmbReviewScore;
protected System.Web.UI.WebControls.Button btnSave;
protected System.Web.UI.WebControls.Button btnCheckOver;
protected System.Web.UI.WebControls.Panel pnlLast;
protected System.Web.UI.WebControls.Label lblNextObject;
protected System.Web.UI.WebControls.TextBox txtNewObject;
protected System.Web.UI.WebControls.Button btnAdd;
protected System.Web.UI.WebControls.DataGrid grdNext;
protected System.Web.UI.WebControls.Panel pnlNext;
protected System.Web.UI.WebControls.Panel pnlBody;
/// <summary>
/// 网页初始化时执行该方法。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if ( !IsPostBack )
{
//如果网页是第一次生成时,执行如下操作:
bool bLastReviewed = true;
int iEmpID, iYear, iSeason;
//从网页的查询字符串中获取员工编号、年份和季度信息。
iEmpID = int.Parse(Request["EmpID"]);
iYear = int.Parse(Request["Year"]);
iSeason = int.Parse(Request["Season"]);
//保存员工编号、年份和季度信息。
lblEmpID.Text = Request["EmpID"];
lblYear.Text = Request["Year"];
lblSeason.Text = Request["Season"];
//判定是修改本人的报告,还是经理审批,并保存该信息。
if ( (string)Session["EmployeeID"] == Request["EmpID"] )
{
//如果是员工查看或修改自己的业绩报告,则不能填写经理总评和评分。
lblIsManager.Text = "false";
cmbReviewScore.Enabled = false; //禁用“经理总评分”下拉框。
txtReviewComment.ReadOnly = true; //将“经理总评”文本框设为只读。
btnCheckOver.Visible = false;
}
else
{
//如果是经理查看员工的业绩报告,则不可修改员工自己的评价。
lblIsManager.Text = "true";
cmbSelfScore.Enabled = false; //禁用“员工总评分”下拉框。
txtSelfComment.ReadOnly = true; //将“对本季度的总评”文本框设为只读。
//只有员工才能设定下一季度的目标,故应隐藏该部分。
pnlNext.Visible = false;
}
DataSet dsLastItem = new DataSet();
//从数据库中获取本季度的业绩报告的具体目标。
DBUtils.Performance.GetPerformItem(iEmpID, iYear, iSeason, ref dsLastItem);
if ( dsLastItem.Tables[0].Rows.Count == 0 )
{
//如果找不到本季度的业绩报告的具体目标,则说明该业绩报告不存在,则仅显示提示信息。
pnlLast.Visible = false;
lblNoLast.Visible = true;
pnlStatus.Visible = false;
}
else
{
//如果检索到本季度的业绩报告的具体目标,则继续显示其他信息。
lblNoLast.Visible = false;
pnlLast.Visible = true;
//将业绩报告的具体目标以 DataGrid 的形式显示。
grdLast.DataSource = dsLastItem.Tables[0];
grdLast.DataBind();
grdLast.Visible = true;
//检索数据库,看该报告经理是否已审核结束。
DBUtils.Performance.CheckIfReviewed(iEmpID, iYear, iSeason,ref bLastReviewed);
if ( bLastReviewed )
{
//经理已经审核过,所以不允许修改。
grdLast.Columns[4].Visible = false;
txtSelfComment.ReadOnly = true;
txtReviewComment.ReadOnly = true;
cmbSelfScore.Enabled = false;
cmbReviewScore.Enabled = false;
//在界面上显示该报告的状态为不可修改。
lblPerformStatus.Text = "审核已结束,不可修改!";
}
else
{
//经理未审核过,则在界面上显示该报告的状态为可修改。
lblPerformStatus.Text = "可修改";
}
//检索数据库,获取该业绩报告的总体信息,如员工总评,经理总评等。
DataSet dsPerform = new DataSet();
DBUtils.Performance.GetPerformance(iEmpID, iYear, iSeason, ref dsPerform);
//With dsPerform.Tables[0].Rows(0);
DataTable dt = dsPerform.Tables[0];
//如果检索到相应数据,则执行如下操作:
//保存该业绩报告的编号。
lblPerformID.Text = dt.Rows[0]["PerformID"].ToString();
//显示员工自己的总评价。
txtSelfComment.Text = dt.Rows[0]["SelfComment"].ToString().Trim();
//显示经理的总评价。
txtReviewComment.Text = dt.Rows[0]["ReviewComment"].ToString ().Trim();
if ( dt.Rows[0]["SelfScore"] == DBNull.Value )
{
//如果以前没有设定过员工总评分,则“员工总评分”下拉框应不选中任何项。
cmbSelfScore.SelectedIndex = -1;
}
else
{
//否则“员工总评分”下拉框显示数据库中保存的内容。
cmbSelfScore.SelectedValue = dt.Rows[0]["SelfScore"].ToString() ;
}
if ( ( dt.Rows[0]["ReviewScore"] == DBNull.Value ))
{
//如果以前没有设定过经理总评分,则“经理总评分”下拉框应不选中任何项。
cmbReviewScore.SelectedIndex = -1;
}
else
{
//否则“经理总评分”下拉框显示数据库中保存的内容。
cmbReviewScore.SelectedValue = dt.Rows[0]["ReviewScore"].ToString ();
}
//End With
}
//如果是员工自己填写业绩报告,则根据系统日期判断是否为当前季度,若是则允许员工填写下一季度的目标。
if ( pnlNext.Visible == true )
{
iYear = int.Parse(Request["Year"]);
iSeason = int.Parse(Request["Season"]);
if ( !(iYear == DateTime.Now.Year && iSeason == (int)((DateTime.Now.Month + 2) / 3)))
{
//不是本季度,不能设定下一季度的目标
pnlNext.Visible = false;
}
else
{
//是本季度,可以设定下一季度的目标。
//通过调用 RebindNextGrd 方法来设定并显示下季度目标对应的控件。
RebindNextGrd();
}
}
}
}
/// <summary>
/// 该方法设定并显示本季度业绩报告所对应的 DataGrid 控件。
/// </summary>
/// <param name="e"></param>
///
void RebindLastGrd()
{
DataSet dsLastItem = new DataSet();
int iEmpID, iYear, iSeason;
//获取在网页中保存的员工编号、年份和季度。
iEmpID = int.Parse(lblEmpID.Text);
iYear = int.Parse(lblYear.Text);
iSeason = int.Parse(lblSeason.Text);
//从数据库中获取本季度的业绩报告的具体目标。
DBUtils.Performance.GetPerformItem(iEmpID, iYear, iSeason, ref dsLastItem);
//将业绩报告的具体目标以 DataGrid 的形式显示。
grdLast.DataSource = dsLastItem.Tables[0];
grdLast.DataBind();
grdLast.Visible = true;
}
/// <summary>
/// //该方法设定并显示下一季度业绩报告所对应的 DataGrid 控件。
/// </summary>
/// <param name="e"></param>
///
void RebindNextGrd()
{
DataSet dsNextItem = new DataSet();
int iEmpID, iYear, iSeason;
//获取在网页中保存的员工编号、年份和季度。
iEmpID = int.Parse(lblEmpID.Text);
iYear = int.Parse(lblYear.Text);
iSeason = int.Parse(lblSeason.Text);
//将季度数目加一。
iSeason += 1;
//如果季度数目为 5,则应调整为下一年的第一季度。
if ( iSeason == 5 )
{
iYear += 1;
iSeason = 1;
}
//从数据库中获取该季度的业绩报告的具体目标。
DBUtils.Performance.GetPerformItem(iEmpID, iYear, iSeason, ref dsNextItem);
//将业绩报告的具体目标以 DataGrid 的形式显示。
if ( dsNextItem.Tables[0].Rows.Count > 0 )
{
grdNext.DataSource = dsNextItem.Tables[0];
grdNext.DataBind();
grdNext.Visible = true;
}
else
{
grdNext.Visible = false;
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.grdLast.ItemCreated += new System.Web.UI.WebControls.DataGridItemEventHandler(this.grdLast_ItemCreated);
this.grdLast.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdLast_CancelCommand);
this.grdLast.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdLast_EditCommand);
this.grdLast.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdLast_UpdateCommand);
this.grdLast.SelectedIndexChanged += new System.EventHandler(this.grdLast_SelectedIndexChanged);
this.txtSelfComment.TextChanged += new System.EventHandler(this.txtSelfComment_TextChanged);
this.txtReviewComment.TextChanged += new System.EventHandler(this.txtReviewComment_TextChanged);
this.cmbSelfScore.SelectedIndexChanged += new System.EventHandler(this.cmbSelfScore_SelectedIndexChanged);
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
this.btnCheckOver.Click += new System.EventHandler(this.btnCheckOver_Click);
this.txtNewObject.TextChanged += new System.EventHandler(this.txtNewObject_TextChanged);
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
this.grdNext.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdNext_CancelCommand);
this.grdNext.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdNext_EditCommand);
this.grdNext.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdNext_UpdateCommand);
this.grdNext.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.grdNext_DeleteCommand);
this.grdNext.SelectedIndexChanged += new System.EventHandler(this.grdNext_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/// <summary>
/// 当用户单击“添加”按钮时,该方法将在数据库中添加下季度业绩报告的具体目标。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAdd_Click(object sender, System.EventArgs e)
{
//检查用户所设定的新目标是否为空,如果是,则退出。
if ( txtNewObject.Text.Trim() == "" )
{
return;
}
int iEmpID, iYear, iSeason;
//获取在网页中保存的员工编号、年份和季度。
iEmpID = int.Parse(lblEmpID.Text);
iYear = int.Parse(lblYear.Text);
iSeason = int.Parse(lblSeason.Text);
//将季度数目加一。
iSeason += 1;
//如果季度数目为 5,则应调整为下一年的第一季度。
if ( iSeason == 5 )
{
iYear += 1;
iSeason = 1;
}
//将“设定下一季度的目标”文本框中所设定的目标添加到数据库。
DBUtils.Performance.AddPerformObject(iEmpID, iYear, iSeason, txtNewObject.Text.Trim());
DataSet dsItem = new DataSet();
//从数据库中重新获取该季度的业绩报告的具体目标。
DBUtils.Performance.GetPerformItem(iEmpID, iYear, iSeason, ref dsItem);
//将业绩报告的具体目标以 DataGrid 的形式显示。
grdNext.DataSource = dsItem.Tables[0];
grdNext.DataBind();
grdNext.Visible = true;
}
/// <summary>
/// 当用户单击“保存”按钮时,该方法将用户对本季度业绩报告的修改保存到数据库中。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSave_Click(object sender, System.EventArgs e)
{
int iPerformID, iSelfScore, iReviewScore;
string strSelfComment, strReviewComment;
//获取在网页中保存的业绩报告编号。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -