6.6 角色用户管理设计与实现
6.6.4 员工信息管理

图6.20 员工信息管理页面
如图6.20所示,员工信息管理页Employees.aspx程序较为复杂,主要使用了DataGrid控件。在控件中点击姓名,将弹出如图所示的员工信息表(EmployeeInfo.aspx)页面;点击员工照片(实际上是一个图片按钮ImageButton)将弹出显示大尺寸照片的页面DisplayImage.aspx;而且员工信息管理页下方的添加编辑控件既要负责添加员工信息,还要负责修改已有信息。当点击DataGrid控件的编辑按钮时,既要已原有信息填充页面下方的编辑控件,还要隐藏添加信息按钮,并显示保存修改按钮。
下面逐一介绍各部分程序的代码:
1、EmployeeInfo.aspx文件代码:
......
<form id="Form1" method="post" runat="server">
<table height="200" cellSpacing="0" cellPadding="0" width="600"
align="center" border="0">
<tr align="center"><td>员工信息表</td></tr>
</table>
<%
if(dr !=null)
{
if(dr.Read())
{
%>
<table cellSpacing="0" cellPadding="6" width="500" align="center" border="1">
<tr align="center">
<td>员工姓名</td>
<td><%=dr["EmployeeName"]%></td>
<td>性别</td>
<td><%=dr["sex_alias"]%></td>
<td rowSpan="3">
<%
Image1.ImageUrl="DisplayImage.aspx?id="+dr["EmployeeID"];
%>
<asp:Image id="Image1" runat="server" Width="70px" Height="100px"></asp:Image>
</td>
</tr>
<tr align="center">
<td>所属部门</td>
<td><%=dr["orgname"]%> </td>
<td>出生日期</td>
<td><%=dr["sbirthdate"]%></td>
</tr>
<tr align="center">
<td>职务(职责)</td>
<td><%=dr["Business"]%></td>
<td><FONT face="宋体">家庭住址</FONT></td>
<td><%=dr["Address"]%></td>
</tr>
<tr align="center">
<td><FONT face="宋体">入职日期</FONT></td>
<td><%=dr["shiredate"]%></td>
<td><FONT face="宋体">家庭电话</FONT></td>
<td colSpan="2"><%=dr["HomePhone"]%></td>
</tr>
<tr align="center">
<td><FONT face="宋体">手机号码</FONT></td>
<td colSpan="4"><%=dr["CellPhone"]%></td>
</tr>
<tr align="center">
<td>员工简历</td>
<td align="left" width="360" colSpan="4" style="RIGHT:50px;
WORD-BREAK:break-all;WORD-WRAP:break-word"><%=dr["Notes"]%></td>
</tr>
</table>
<%
conn.Close();
}
}
else
Response.Write("该用户信息不存在!");
%>
</form>
EmployeeInfo.aspx.cs文件代码:
......
using DataAccess;
namespace workflow.admin
{
public class EmployeeInfo : System.Web.UI.Page
{
protected SqlDataReader dr=null;
protected System.Web.UI.WebControls.Image Image1;
protected SqlConnection conn=null;
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.QueryString["id"] !=null & Request.QueryString["id"].ToString() !="")
{
string id=Request.QueryString["id"].ToString();
string strSql="select EmployeeID,GroupID,EmployeeName,Sex,Business,CellPhone,
HomePhone,Address,Notes,sex_alias=(case Sex when 'M' then '男' else '女'
end),orgname=(select Group_Name from organization where
Group_ID=GroupID),shiredate=CONVERT(varchar(10), HireDate, 120),
CONVERT(varchar(10), BirthDate, 120) as sbirthdate from Employees
where EmployeeID="+id;
Base basecode=new Base();
dr=basecode.SQLExeDataReader(strSql);
conn=basecode.AppCon;
}
}
}
}
2、DisplayImage.aspx.cs文件代码:
DisplayImage.aspx只有.Net自动生成的代码,照片的显示由DisplayImage.aspx.cs文件代码完成:
......
using DataAccess;
namespace workflow.admin
{
public class DisplayImage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
if(! IsPostBack)
{
//验证用户是否登录
if(Session["userid"] == null)
Response.Redirect("./Message.aspx");
}
string employeeID=Request.QueryString["id"];
string strSql="select Photo,PhotoImageType from Employees where
EmployeeID="+employeeID;
Base basecode=new Base();
SqlDataReader dr=basecode.SQLExeDataReader(strSql);
dr.Read();
if((string)dr["PhotoImageType"] !="")
{
Response.ContentType=(string)dr["PhotoImageType"];
Response.BinaryWrite((byte[])dr["Photo"]);
}
else
Response.Write("暂无照片");
basecode.AppCon.Close();
}
}
}
3、Employees.aspx文件代码:

图6.21 在属性生成器中设置控件列

图6.22 编辑照片模板列
......
<form id="Form1" method="post" runat="server">
<table cellSpacing="0" cellPadding="0" width="100%" align="center" border="0">
<tr><td style="FONT-SIZE: 16px" align="center">员工管理数据表</td></tr>
<tr height="50"><td align="right"><span id="Message" style="FONT-SIZE: 11pt;
FONT-FAMILY: Arial" runat="server" MaintainState="false"></span> </td>
</tr>
<tr><td>
<asp:datagrid id="DataGrid1" runat="server" AllowPaging="True"
DataKeyField="EmployeeID" Width="100%" HeaderStyle-HorizontalAlign="Center"
PageSize="8">
<ItemStyle Font-Size="13px" HorizontalAlign="Center" Height="28px"
VerticalAlign="Bottom"></ItemStyle>
<HeaderStyle Font-Size="16px" HorizontalAlign="Center" Height="30px"
VerticalAlign="Middle" BackColor="#EEEEEE"></HeaderStyle>
<Columns>
<asp:HyperLinkColumn Target="_blank" DataNavigateUrlField="EmployeeID"
DataNavigateUrlFormatString="EmployeeInfo.aspx?id={0}"
DataTextField="EmployeeName" HeaderText="员工姓名">
</asp:HyperLinkColumn><!-- 如图6.21所示 -->
<asp:BoundColumn DataField="orgname" ReadOnly="True" HeaderText="部门名称">
</asp:BoundColumn>
<asp:BoundColumn DataField="Business" HeaderText="职务"></asp:BoundColumn>
<asp:BoundColumn DataField="shiredate" HeaderText="入职时间"></asp:BoundColumn>
<asp:BoundColumn DataField="CellPhone" HeaderText="电话号码"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="照片"><!-- 如图6.22所示 -->
<ItemTemplate><!-- 借用了UpdateCommand事件处理函数 -->
<asp:ImageButton id=ImageButton1 runat="server" Width="30px"
CommandName="Update" Height="40px" ImageUrl='<%# FormatURL((DataBinder
.eval_r(Container.DataItem, "EmployeeID")).ToString()) %>'>
<!-- 利用后台代码的FormatURL函数处理容器列 -->
</asp:ImageButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="" CancelText=""
EditText="编辑"><!-- 对应EditCommand事件处理函数 -->
</asp:EditCommandColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton id="LinkButton1" runat="server" CommandName="Delete">删除
</asp:LinkButton><!-- 借用了DeleteCommand事件处理函数 -->
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Font-Size="9pt" HorizontalAlign="Right" ForeColor="#3366FF"
Mode="NumericPages"></PagerStyle><!-- 对应PageIndexChanged事件处理函数 -->
</asp:datagrid>
</td></tr>
</table>
<table cellSpacing="0" cellPadding="0" width="100%" border="0">
<tr height="25">
<TD vAlign="bottom">添加(编辑)员工信息</TD>
......
</TR>
</TABLE>
......
<table cellSpacing="2" cellPadding="2" width="100%" align="right" border="0">
<tr>
<td align="right" width="10%">员工姓名:</td>
<td width="30%"><asp:textbox id="TextBox1" runat="server"></asp:textbox>
<asp:label id="Label1" runat="server" ForeColor="Red"></asp:label>
<asp:textbox id="TextBox9" runat="server" Visible="False"></asp:textbox>
</td><!-- 隐藏文本框TextBox9用于保存员工编号(编号不可修改,保存修改信息时使用) -->
<td align="right" width="10%">所属部门:</td>
<td width="50%">
<asp:dropdownlist id="DropDownList1" runat="server" DataValueField="Group_ID"
DataTextField="Group_Name">
</asp:dropdownlist> 性别:
<asp:radiobutton id="RadioButton1" runat="server" GroupName="Sex" Checked="True"
Text="男"></asp:radiobutton>
<asp:radiobutton id="RadioButton2" runat="server" GroupName="Sex"
Text="女"></asp:radiobutton>
</td>
</tr>
<tr>
<td align="right">职务(职责):</td>
<td><asp:textbox id="TextBox2" runat="server"></asp:textbox></td>
<td align="right"><FONT face="宋体">出生日期:</FONT></td>
<td><asp:textbox id="TextBox3" runat="server"></asp:textbox><asp:label id="Label2"
runat="server" ForeColor="Red"></asp:label></td>
</tr>
<tr>
<td align="right"><FONT face="宋体">入职日期:</FONT></td>
<td><asp:textbox id="TextBox4" runat="server"></asp:textbox><asp:label id="Label3"
runat="server" ForeColor="Red"></asp:label></td>
<td align="right"> <FONT face="宋体">家庭住址:</FONT></td>
<td><asp:textbox id="TextBox5" runat="server" Columns="60"></asp:textbox></td>
</tr>
<TR>
<TD align="right"><FONT face="宋体">家庭电话:</FONT></TD>
<TD><asp:textbox id="TextBox6" runat="server"></asp:textbox></TD>
<TD align="right"><FONT face="宋体">手机号码:</FONT></TD>
<TD><asp:textbox id="TextBox7" runat="server"></asp:textbox></TD>
</TR>
<TR>
<TD align="right"><FONT face="宋体">上传照片:</FONT></TD>
<TD><INPUT id="PersonImage" type="file" name="PersonImage" runat="server"></TD>
<TD align="right"><FONT face="宋体">员工简历:</FONT></TD>
<TD><asp:textbox id="TextBox8" runat="server" Columns="100" Rows="6"
TextMode="MultiLine"></asp:textbox></TD>
</TR>
<tr>
<td align="right"> </td>
<td> </td><td> </td>
<td>
<asp:button id="Button1" runat="server" Text="添加员工"></asp:button>
<asp:button id="Button2" runat="server" Text="修改员工信息"></asp:button>
<asp:Button id="Button3" runat="server" Text="取消修改"></asp:Button>
<span id="EditMessage" style="FONT-SIZE: 11pt; FONT-FAMILY: Arial"
runat="server" MaintainState="false"></span></td>
</tr>
</table>
......
</form>