以下是页面的HTML代码:

<%...@ Page Language="C#" AutoEventWireup="true" StylesheetTheme="Default" Theme="Default"
CodeFile="InsuranceList.aspx.cs" Inherits="Employee_InsuranceList" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>员工保险信息</title>
</head>
<body>
<form id="form1" runat="server">
<fieldset>
<legend>员工保险管理</legend>
<div id="tabsF">
<ul>
<li><a href="AddInsurance.aspx" title="添加员工保险"><span>添加员工保险</span></a></li>
<li><a href="../Default.aspx" title="返回主页面"><span>返回</span></a></li>
</ul>
</div>
</fieldset>
<fieldset>
<legend>保险信息</legend>开始年份:<asp:TextBox ID="txtBDate" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtBDate"
ErrorMessage="开始年份不能为空" Display="Dynamic">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtBDate"
Display="Dynamic" ErrorMessage="开始年份格式不正确" ValidationExpression="^[0-9]*[1-9][0-9]*$">*</asp:RegularExpressionValidator>结束年份:
<asp:TextBox ID="txtEndDate" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtEndDate"
ErrorMessage="结束年份不能为空" Display="Dynamic">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtEndDate"
Display="Dynamic" ErrorMessage="结束年份格式不正确" ValidationExpression="^[0-9]*[1-9][0-9]*$">*</asp:RegularExpressionValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="txtEndDate"
ControlToValidate="txtBDate" ErrorMessage="开始年份不能大于结束年份" Operator="LessThanEqual"
Type="Integer" Display="Dynamic">*</asp:CompareValidator>
<asp:Button ID="btnSel" runat="server" Text="开始查询" OnClick="btnSel_Click" />
<asp:GridView ID="gvInsurance" runat="server" SkinID="Default_GridView" AutoGenerateColumns="False"
OnDataBound="gvInsurance_DataBound" OnRowDataBound="gvInsurance_RowDataBound" CaptionAlign="Left" OnRowDeleting="gvInsurance_RowDeleting" OnRowEditing="gvInsurance_RowEditing" ShowFooter="True">
<Columns>
<asp:BoundField DataField="ComName" HeaderText="公司名称" />
<asp:BoundField DataField="DepartName" HeaderText="部门名称" />
<asp:BoundField DataField="EmpName" HeaderText="员工姓名" />
<asp:BoundField DataField="InsYear" HeaderText="保险年度" />
<asp:BoundField DataField="Endowment" DataFormatString="{0:C}" HeaderText="养老保险"
HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="Medicare" DataFormatString="{0:C}" HeaderText="医疗保险" HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="Unemployed" DataFormatString="{0:C}" HeaderText="失业保险"
HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="Fund" DataFormatString="{0:C}" HeaderText="公积金" HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="EmpCode" HeaderText="员工编号" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
</fieldset>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True"
ShowSummary="False" />
</form>
</body>
</html>
protected void gvInsurance_DataBound(object sender, EventArgs e)

...{
GroupRows(this.gvInsurance, 0);
GroupRows(this.gvInsurance, 1);
}
public static void GroupRows(GridView GridView1, int cellNum)

...{
int i = 0, rowSpanNum = 1;
while (i < GridView1.Rows.Count - 1)

...{
GridViewRow gvr = GridView1.Rows[i];
for (++i; i < GridView1.Rows.Count; i++)

...{
GridViewRow gvrNext = GridView1.Rows[i];
if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)

...{
gvrNext.Cells[cellNum].Visible = false;
rowSpanNum++;
}
else

...{
gvr.Cells[cellNum].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
}

if (i == GridView1.Rows.Count - 1)

...{
gvr.Cells[cellNum].RowSpan = rowSpanNum;
}
}
}
}
书写实现数据列合计是在RowDataBind事件里面进行书写,代码如下:
protected void gvInsurance_RowDataBound(object sender, GridViewRowEventArgs e)

...{
if (e.Row.RowType == DataControlRowType.DataRow)

...{
e.Row.Attributes.Add("onmouseover", "e=this.style.backgroundColor; this.style.backgroundColor='linen'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=e");
}
//sum info
if (e.Row.RowType == DataControlRowType.Footer)

...{
//unite cell
e.Row.Cells[0].ColumnSpan = 11;
//visual 10 cell
for (int i = 1; i < 11; i++)

...{
e.Row.Cells[i].Visible = false;
}
//get every unite cell value
TableCell cellEndowment = e.Row.Cells[4];
TableCell cellMedicare = e.Row.Cells[5];
TableCell cellUnemployed=e.Row.Cells[6];
TableCell cellFund=e.Row.Cells[7];
TableCell cellSum = e.Row.Cells[8];
//define variable
double endowment,medicare,unemployee,fund;
//set value
endowment= GetSum(4);
medicare=GetSum(5);
unemployee=GetSum(6);
fund=GetSum(7);
//response string
e.Row.Cells[0].Text="养老保险合计:" + String.Format("{0:C}",endowment)+
" 医疗保险合计:" + String.Format("{0:C}", medicare)+
" 失业保险合计:" + string.Format("{0:C}",unemployee)+
" 公积金合计:" + string.Format("{0:C}",fund)+
" 总计:"+string.Format("{0:C}",this.GetSum(endowment,medicare,unemployee,fund));

}
}

/**//// <summary>
/// get sum
/// </summary>
/// <param name="i">column id</param>
/// <returns>sum value</returns>
private double GetSum(int i)

...{
//define variable
double sum = 0;
foreach (GridViewRow row in this.gvInsurance.Rows)

...{
sum += Convert.ToDouble(string.Format("{0:2F}",row.Cells[i].Text.Remove(0,1)));
}
return sum;
}

/**//// <summary>
/// get all sum
/// </summary>
/// <param name="endowment">养老保险</param>
/// <param name="medicare">医疗保险</param>
/// <param name="unemployee">失业保险</param>
/// <param name="fund">公积金</param>
/// <returns>sum</returns>
private double GetSum(double endowment,double medicare,double unemployee,double fund)

...{
return endowment+medicare+unemployee+fund;
}

<%...@ Page Language="C#" AutoEventWireup="true" StylesheetTheme="Default" Theme="Default"
CodeFile="InsuranceList.aspx.cs" Inherits="Employee_InsuranceList" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>员工保险信息</title>
</head>
<body>
<form id="form1" runat="server">
<fieldset>
<legend>员工保险管理</legend>
<div id="tabsF">
<ul>
<li><a href="AddInsurance.aspx" title="添加员工保险"><span>添加员工保险</span></a></li>
<li><a href="../Default.aspx" title="返回主页面"><span>返回</span></a></li>
</ul>
</div>
</fieldset>
<fieldset>
<legend>保险信息</legend>开始年份:<asp:TextBox ID="txtBDate" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtBDate"
ErrorMessage="开始年份不能为空" Display="Dynamic">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtBDate"
Display="Dynamic" ErrorMessage="开始年份格式不正确" ValidationExpression="^[0-9]*[1-9][0-9]*$">*</asp:RegularExpressionValidator>结束年份:
<asp:TextBox ID="txtEndDate" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtEndDate"
ErrorMessage="结束年份不能为空" Display="Dynamic">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="txtEndDate"
Display="Dynamic" ErrorMessage="结束年份格式不正确" ValidationExpression="^[0-9]*[1-9][0-9]*$">*</asp:RegularExpressionValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="txtEndDate"
ControlToValidate="txtBDate" ErrorMessage="开始年份不能大于结束年份" Operator="LessThanEqual"
Type="Integer" Display="Dynamic">*</asp:CompareValidator>
<asp:Button ID="btnSel" runat="server" Text="开始查询" OnClick="btnSel_Click" />
<asp:GridView ID="gvInsurance" runat="server" SkinID="Default_GridView" AutoGenerateColumns="False"
OnDataBound="gvInsurance_DataBound" OnRowDataBound="gvInsurance_RowDataBound" CaptionAlign="Left" OnRowDeleting="gvInsurance_RowDeleting" OnRowEditing="gvInsurance_RowEditing" ShowFooter="True">
<Columns>
<asp:BoundField DataField="ComName" HeaderText="公司名称" />
<asp:BoundField DataField="DepartName" HeaderText="部门名称" />
<asp:BoundField DataField="EmpName" HeaderText="员工姓名" />
<asp:BoundField DataField="InsYear" HeaderText="保险年度" />
<asp:BoundField DataField="Endowment" DataFormatString="{0:C}" HeaderText="养老保险"
HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="Medicare" DataFormatString="{0:C}" HeaderText="医疗保险" HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="Unemployed" DataFormatString="{0:C}" HeaderText="失业保险"
HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="Fund" DataFormatString="{0:C}" HeaderText="公积金" HtmlEncode="False">
<ItemStyle HorizontalAlign="Right" />
</asp:BoundField>
<asp:BoundField DataField="EmpCode" HeaderText="员工编号" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
</fieldset>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True"
ShowSummary="False" />
</form>
</body>
</html>
实现数据行合并是在GridView的DataBind事件进行书写:
代码如下:
protected void gvInsurance_DataBound(object sender, EventArgs e)
...{
GroupRows(this.gvInsurance, 0);
GroupRows(this.gvInsurance, 1);
}
public static void GroupRows(GridView GridView1, int cellNum)
...{
int i = 0, rowSpanNum = 1;
while (i < GridView1.Rows.Count - 1)
...{
GridViewRow gvr = GridView1.Rows[i];
for (++i; i < GridView1.Rows.Count; i++)
...{
GridViewRow gvrNext = GridView1.Rows[i];
if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
...{
gvrNext.Cells[cellNum].Visible = false;
rowSpanNum++;
}
else
...{
gvr.Cells[cellNum].RowSpan = rowSpanNum;
rowSpanNum = 1;
break;
}
if (i == GridView1.Rows.Count - 1)
...{
gvr.Cells[cellNum].RowSpan = rowSpanNum;
}
}
}
}
protected void gvInsurance_RowDataBound(object sender, GridViewRowEventArgs e)
...{
if (e.Row.RowType == DataControlRowType.DataRow)
...{
e.Row.Attributes.Add("onmouseover", "e=this.style.backgroundColor; this.style.backgroundColor='linen'");
e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=e");
}
//sum info
if (e.Row.RowType == DataControlRowType.Footer)
...{
//unite cell
e.Row.Cells[0].ColumnSpan = 11;
//visual 10 cell
for (int i = 1; i < 11; i++)
...{
e.Row.Cells[i].Visible = false;
}
//get every unite cell value
TableCell cellEndowment = e.Row.Cells[4];
TableCell cellMedicare = e.Row.Cells[5];
TableCell cellUnemployed=e.Row.Cells[6];
TableCell cellFund=e.Row.Cells[7];
TableCell cellSum = e.Row.Cells[8];
//define variable
double endowment,medicare,unemployee,fund;
//set value
endowment= GetSum(4);
medicare=GetSum(5);
unemployee=GetSum(6);
fund=GetSum(7);
//response string
e.Row.Cells[0].Text="养老保险合计:" + String.Format("{0:C}",endowment)+
" 医疗保险合计:" + String.Format("{0:C}", medicare)+
" 失业保险合计:" + string.Format("{0:C}",unemployee)+
" 公积金合计:" + string.Format("{0:C}",fund)+
" 总计:"+string.Format("{0:C}",this.GetSum(endowment,medicare,unemployee,fund));
}
}注:设置GridView的DataSource时,根据你欲合并数据行的列进行排序。
附1:

/**//// <summary>
/// get sum
/// </summary>
/// <param name="i">column id</param>
/// <returns>sum value</returns>
private double GetSum(int i)
...{
//define variable
double sum = 0;
foreach (GridViewRow row in this.gvInsurance.Rows)
...{
sum += Convert.ToDouble(string.Format("{0:2F}",row.Cells[i].Text.Remove(0,1)));
}
return sum;
}
/**//// <summary>
/// get all sum
/// </summary>
/// <param name="endowment">养老保险</param>
/// <param name="medicare">医疗保险</param>
/// <param name="unemployee">失业保险</param>
/// <param name="fund">公积金</param>
/// <returns>sum</returns>
private double GetSum(double endowment,double medicare,double unemployee,double fund)
...{
return endowment+medicare+unemployee+fund;
}
本文介绍了一个员工保险管理系统的设计与实现过程,包括使用ASP.NET进行前端界面布局、数据验证及表格展示,通过GridView实现了数据行合并及列合计等功能。
3810

被折叠的 条评论
为什么被折叠?



