Repeater 创建复杂表头的表格
GridView的功能虽然强大,但在创建复杂表头报表时却显得逊色许多。此时我们应该想起另外一个控件:Repeater。
下面是Repeater的结构:
顾名思义,HeaderTemplate为表头模板,ItemTemplate为可重复的项,AlternatingItemTemplate为可重复交替项,FooterTemplate为注脚部部分。
下面给出示例:
1. 前台代码:
2. 后台代码:
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
</ItemTemplate>
<AlternatingItemTemplate>
</AlternatingItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
</ItemTemplate>
<AlternatingItemTemplate>
</AlternatingItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
顾名思义,HeaderTemplate为表头模板,ItemTemplate为可重复的项,AlternatingItemTemplate为可重复交替项,FooterTemplate为注脚部部分。
下面给出示例:
1. 前台代码:
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1" align="center" width="100%" bordercolorlight="#a9a9a9" bordercolordark="#ffffff"
cellspacing="0" cellpadding="1" bordercolor="#a9a9a9" style="text-align: center;">
<tr bgcolor="#B5DBFF">
<td rowspan="2" style="width: 100px">
波段</td>
<td rowspan="2" style="width: 100px">
时段</td>
<td colspan="3" style="height: 17px;">
第一部分</td>
<td colspan="3" style="height: 17px;">
第二部分</td>
<td rowspan="2" style="width: 100px">
合计</td>
</tr>
<tr bgcolor="#B5DBFF">
<td style="width: 100px; height: 17px;">
一</td>
<td style="width: 100px; height: 17px;">
二</td>
<td style="width: 100px; height: 17px;">
三</td>
<td style="width: 100px; height: 17px;">
四</td>
<td style="width: 100px; height: 17px;">
五</td>
<td style="width: 100px; height: 17px;">
六</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="width: 100px">
<%# Eval("ChannelID") %>
</td>
<td style="width: 100px">
<%# Eval("Time")%>
</td>
<td style="width: 100px">
<%# Eval("Monday")%>
</td>
<td style="width: 100px">
<%# Eval("Tuesday")%>
</td>
<td style="width: 100px">
<%# Eval("Wednesday")%>
</td>
<td style="width: 100px">
<%# Eval("Thursday")%>
</td>
<td style="width: 100px">
<%# Eval("Friday")%>
</td>
<td style="width: 100px">
<%# Eval("Saturday")%>
</td>
<td style="width: 100px">
<%# Eval("Sunday")%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color: WhiteSmoke;">
<td style="width: 100px">
<%# Eval("ChannelID") %>
</td>
<td style="width: 100px">
<%# Eval("Time")%>
</td>
<td style="width: 100px">
<%# Eval("Monday")%>
</td>
<td style="width: 100px">
<%# Eval("Tuesday")%>
</td>
<td style="width: 100px">
<%# Eval("Wednesday")%>
</td>
<td style="width: 100px">
<%# Eval("Thursday")%>
</td>
<td style="width: 100px">
<%# Eval("Friday")%>
</td>
<td style="width: 100px">
<%# Eval("Saturday")%>
</td>
<td style="width: 100px">
<%# Eval("Sunday")%>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<cc1:WebPager ID="WebPager1" runat="server" PagerStyle="NextPrev" ControlToPaginate="Repeater1"
ItemsPerPage="24" OnPageIndexChanged="WebPager1_PageIndexChanged" />
<HeaderTemplate>
<table border="1" align="center" width="100%" bordercolorlight="#a9a9a9" bordercolordark="#ffffff"
cellspacing="0" cellpadding="1" bordercolor="#a9a9a9" style="text-align: center;">
<tr bgcolor="#B5DBFF">
<td rowspan="2" style="width: 100px">
波段</td>
<td rowspan="2" style="width: 100px">
时段</td>
<td colspan="3" style="height: 17px;">
第一部分</td>
<td colspan="3" style="height: 17px;">
第二部分</td>
<td rowspan="2" style="width: 100px">
合计</td>
</tr>
<tr bgcolor="#B5DBFF">
<td style="width: 100px; height: 17px;">
一</td>
<td style="width: 100px; height: 17px;">
二</td>
<td style="width: 100px; height: 17px;">
三</td>
<td style="width: 100px; height: 17px;">
四</td>
<td style="width: 100px; height: 17px;">
五</td>
<td style="width: 100px; height: 17px;">
六</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td style="width: 100px">
<%# Eval("ChannelID") %>
</td>
<td style="width: 100px">
<%# Eval("Time")%>
</td>
<td style="width: 100px">
<%# Eval("Monday")%>
</td>
<td style="width: 100px">
<%# Eval("Tuesday")%>
</td>
<td style="width: 100px">
<%# Eval("Wednesday")%>
</td>
<td style="width: 100px">
<%# Eval("Thursday")%>
</td>
<td style="width: 100px">
<%# Eval("Friday")%>
</td>
<td style="width: 100px">
<%# Eval("Saturday")%>
</td>
<td style="width: 100px">
<%# Eval("Sunday")%>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color: WhiteSmoke;">
<td style="width: 100px">
<%# Eval("ChannelID") %>
</td>
<td style="width: 100px">
<%# Eval("Time")%>
</td>
<td style="width: 100px">
<%# Eval("Monday")%>
</td>
<td style="width: 100px">
<%# Eval("Tuesday")%>
</td>
<td style="width: 100px">
<%# Eval("Wednesday")%>
</td>
<td style="width: 100px">
<%# Eval("Thursday")%>
</td>
<td style="width: 100px">
<%# Eval("Friday")%>
</td>
<td style="width: 100px">
<%# Eval("Saturday")%>
</td>
<td style="width: 100px">
<%# Eval("Sunday")%>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<cc1:WebPager ID="WebPager1" runat="server" PagerStyle="NextPrev" ControlToPaginate="Repeater1"
ItemsPerPage="24" OnPageIndexChanged="WebPager1_PageIndexChanged" />
2. 后台代码:
#region Page事件
DataTest.BLL.GetData myBiz = new DataTest.BLL.GetData();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GetData();
BindGrid();
}
}
#endregion
#region Repeater
#region 数据绑定
/// <summary>
/// 获取数据
/// </summary>
protected void GetData()
{
this.DataSource = myBiz.GetOrderDetails("RM_Clocks"); ;
}
/// <summary>
/// GridView 数据绑定
/// </summary>
private void BindGrid()
{
WebPager1.DataSource = this.DataSource;
WebPager1.DataBind();
}
#endregion
#region 分页
protected void WebPager1_PageIndexChanged(object sender, wf.WebPager.PageChangedEventArgs e)
{
WebPager1.CurrentPageIndex = e.NewPageIndex;
WebPager1.DataSource = this.DataSource;
WebPager1.DataBind();
}
#endregion
#endregion
DataTest.BLL.GetData myBiz = new DataTest.BLL.GetData();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GetData();
BindGrid();
}
}
#endregion
#region Repeater
#region 数据绑定
/// <summary>
/// 获取数据
/// </summary>
protected void GetData()
{
this.DataSource = myBiz.GetOrderDetails("RM_Clocks"); ;
}
/// <summary>
/// GridView 数据绑定
/// </summary>
private void BindGrid()
{
WebPager1.DataSource = this.DataSource;
WebPager1.DataBind();
}
#endregion
#region 分页
protected void WebPager1_PageIndexChanged(object sender, wf.WebPager.PageChangedEventArgs e)
{
WebPager1.CurrentPageIndex = e.NewPageIndex;
WebPager1.DataSource = this.DataSource;
WebPager1.DataBind();
}
#endregion
#endregion