Repeater 实现复合表头、排序功能。

很久没写.net代码了。有个报表需要用到复合表头,还需要有排序功能。尝试用GridView,担心性能问题,还是考虑用Repeater实现吧!

 

代码我直接贴处理吧!

 

A:WebForm.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm.aspx.cs" Inherits="WebApplication1.WebForm" %> <!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" method="post" runat="server"> <table width="100%" border=1 bordercolor=#330033 bordercolordark=#999933 bordercolorlight=black> <tr width="100%"> <td colspan=20 align=center><font color=blue size=12>Repeater实现双向排序功能</font></td> </tr> <asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand" OnItemDataBound="Repeater1_ItemDataBound"> <HeaderTemplate> <tr> <TD align="center" height="99" rowSpan="2"><asp:LinkButton ID="RegionCode" Runat="server" text="区域代码" CommandName="RegionCode"></asp:LinkButton></TD> <TD rowSpan=2 align="center" class="cssStrong"><asp:LinkButton ID="RegionName" Runat="server" text="区域名称" CommandName="RegionName"></asp:LinkButton></TD> <TD rowSpan=2 align="center" class="cssStrong"><asp:LinkButton ID="RegionDesc" Runat="server" text="区域描述" CommandName="RegionDesc"></asp:LinkButton></TD> <TD colSpan=8 align="center" class="cssStrong">省的基本信息</TD> <TD colSpan=7 align="center" class="cssStrong">城市的基本信息</TD> </TR> <TR> <TD align="center" class="cssStrong"><asp:LinkButton ID="RegionSalesManID" Runat="server" text="区域销售主任代码" CommandName="RegionSalesManID"></asp:LinkButton></TD> <TD class="cssStrong" ><asp:LinkButton ID="AreaCode" Runat="server" text="地区代码" CommandName="AreaCode"></asp:LinkButton> </TD> <TD class="cssStrong"><asp:LinkButton ID="AreaName" Runat="server" text="地区名称" CommandName="AreaName"></asp:LinkButton> </TD> <TD class="cssStrong"><asp:LinkButton ID="AreaDesc" Runat="server" text="地区描述" CommandName="AreaDesc"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="AreaSalesManID" Runat="server" text="地区销售主任代码" CommandName="AreaSalesManID"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="ProvinceCode" Runat="server" text="省代码" CommandName="ProvinceCode"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="ProvinceName" Runat="server" text="省名称" CommandName="ProvinceName"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="ProvinceDesc" Runat="server" text="省描述" CommandName="ProvinceDesc"></asp:LinkButton></TD> <TD align="center" class="cssStrong"><asp:LinkButton ID="CityCode" Runat="server" text="城市代码" CommandName="CityCode"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="CityName" Runat="server" text="城市名称" CommandName="CityName"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="CityDesc" Runat="server" text="城市描述" CommandName="CityDesc"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="CTPCode" Runat="server" text="城市类型代码" CommandName="CTPCode"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="CTPName" Runat="server" text="城市类型名称" CommandName="CTPName"></asp:LinkButton></TD> <TD class="cssStrong"><asp:LinkButton ID="CTPDesc" Runat="server" text="城市类型描述" CommandName="CTPDesc"></asp:LinkButton></TD> </TR> </HeaderTemplate> <ItemTemplate> <tr> <td><%# DataBinder.Eval(Container.DataItem, "RegionCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "RegionName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "RegionDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "RegionSalesManID")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaSalesManID")%></td> <td><%# DataBinder.Eval(Container.DataItem, "ProvinceCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "ProvinceName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "ProvinceDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CityCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CityName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CityDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CTPCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CTPName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CTPDesc")%></td> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr bgcolor="lightyellow"> <td><%# DataBinder.Eval(Container.DataItem, "RegionCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "RegionName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "RegionDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "RegionSalesManID")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "AreaSalesManID")%></td> <td><%# DataBinder.Eval(Container.DataItem, "ProvinceCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "ProvinceName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "ProvinceDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CityCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CityName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CityDesc")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CTPCode")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CTPName")%></td> <td><%# DataBinder.Eval(Container.DataItem, "CTPDesc")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>

 

B: WebForm.aspx.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; namespace WebApplication1 { public partial class WebForm : System.Web.UI.Page { private readonly string CONNECTIONSTRING =System.Configuration.ConfigurationManager.AppSettings["ConnectString"]; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindRepeater(); } } private DataView GetData { get { return Cache["_data"] as DataView; } set { if (Cache["_data"] == null) Cache["_data"] = value; } } private SqlConnection Conn() { return new SqlConnection(CONNECTIONSTRING); } private void BindRepeater() { DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(" SELECT RegionCode,RegionName,RegionDesc,RegionSalesManID=ta.SalesManID,"+ " AreaCode,AreaName,AreaDesc,AreaSalesManID=tb.SalesManID,"+ " ProvinceCode,ProvinceName,ProvinceDesc,"+ " CityCode,CityName,CityDesc,"+ " CTPCode=(SELECT CTPCode FROM CityType WHERE CTPID=TD.CTPID),"+ " CTPName=(SELECT CTPName FROM CityType WHERE CTPID=TD.CTPID),"+ " CTPDesc=(SELECT CTPDesc FROM CityType WHERE CTPID=TD.CTPID)"+ " FROM Region Ta,Area Tb,Province Tc,City Td"+ " WHERE Ta.RegionID=Tb.RgnID And Tb.AreaID=Tc.AreaID" + " And Tc.ProvinceID=Td.ProvinceID", Conn()); da.Fill(ds); GetData = ds.Tables[0].DefaultView; Repeater1.DataSource = ds.Tables[0]; Repeater1.DataBind(); } protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Header) { if (ViewState["id"] != null) { LinkButton lkbtnSort = (LinkButton)e.Item.FindControl(ViewState["id"].ToString().Trim()); lkbtnSort.Text = ViewState["text"].ToString(); } } } protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.Item.ItemType == ListItemType.Header) { LinkButton lkbtnSort = (LinkButton)e.Item.FindControl(e.CommandName.Trim()); if (ViewState[e.CommandName.Trim()] == null) { ViewState[e.CommandName.Trim()] = "ASC"; lkbtnSort.Text = lkbtnSort.Text + "▲"; } else { if (ViewState[e.CommandName.Trim()].ToString().Trim() == "ASC") { ViewState[e.CommandName.Trim()] = "DESC"; if (lkbtnSort.Text.IndexOf("▲") != -1) lkbtnSort.Text = lkbtnSort.Text.Replace("▲", "▼"); else lkbtnSort.Text = lkbtnSort.Text + "▼"; } else { ViewState[e.CommandName.Trim()] = "ASC"; if (lkbtnSort.Text.IndexOf("▼") != -1) lkbtnSort.Text = lkbtnSort.Text.Trim().Replace("▼", "▲"); else lkbtnSort.Text = lkbtnSort.Text + "▲"; } } ViewState["text"] = lkbtnSort.Text; ViewState["id"] = e.CommandName.Trim(); DataView dv = GetData; dv.Sort = e.CommandName.ToString().Trim() + " " + ViewState[e.CommandName.Trim()].ToString().Trim(); Repeater1.DataSource = dv; Repeater1.DataBind(); } } } }

 

C:效果图,如下:

 

Repeater 实现复合表头、排序功能。_第1张图片

 

 

你可能感兴趣的:(server,object,Class,webform,asp,dataset)