效果如下图:
下载原代码:/Files/vaiyanzi/Attch/RepeaterOrder.rar
前台Html代码:
<%@ Page language="c#" Codebehind="RepeaterOrderForm.aspx.cs" AutoEventWireup="false" Inherits="RepeaterOrder.RepeaterOrderForm" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>RepeaterOrderForm</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<table border=1 bordercolor=#330033 bordercolordark=#999933 bordercolorlight=black>
<tr>
<td colspan=5 align=center><font color=blue size=12>Repeater实现双向排序功能</font></td>
</tr>
<asp:Repeater id="rpOrder" runat="server">
<HeaderTemplate>
<tr align=center >
<td>
<asp:LinkButton ID="LastName" Runat="server" text="LastName" CommandName="LastName"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="FirstName" Runat="server" text="FirstName" CommandName="FirstName"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="Title" Runat="server" text="Title" CommandName="Title"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="Address" Runat="server" text="Address" CommandName="Address"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="City" Runat="server" text="City" CommandName="City"></asp:LinkButton></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem,"LastName")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"FirstName")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"Title")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"Address")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"City")%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</form>
</body>
</HTML>

后台CS文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>RepeaterOrderForm</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<table border=1 bordercolor=#330033 bordercolordark=#999933 bordercolorlight=black>
<tr>
<td colspan=5 align=center><font color=blue size=12>Repeater实现双向排序功能</font></td>
</tr>
<asp:Repeater id="rpOrder" runat="server">
<HeaderTemplate>
<tr align=center >
<td>
<asp:LinkButton ID="LastName" Runat="server" text="LastName" CommandName="LastName"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="FirstName" Runat="server" text="FirstName" CommandName="FirstName"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="Title" Runat="server" text="Title" CommandName="Title"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="Address" Runat="server" text="Address" CommandName="Address"></asp:LinkButton></td>
<td>
<asp:LinkButton ID="City" Runat="server" text="City" CommandName="City"></asp:LinkButton></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem,"LastName")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"FirstName")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"Title")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"Address")%></td>
<td><%# DataBinder.Eval(Container.DataItem,"City")%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</form>
</body>
</HTML>
1
using System;2
using System.Collections;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Web;7
using System.Web.SessionState;8
using System.Web.UI;9
using System.Web.UI.WebControls;10
using System.Web.UI.HtmlControls;11
using System.Data.SqlClient;12
using System.Configuration;13

14
namespace RepeaterOrder15
{16
/// <summary>17
/// RepeaterOrderForm 的摘要说明。18
/// </summary>19
public class RepeaterOrderForm : System.Web.UI.Page20
{21
protected System.Web.UI.WebControls.Repeater rpOrder;22
private readonly string CONNECTIONSTRING=ConfigurationSettings.AppSettings["ConnectionString"];23
private void Page_Load(object sender, System.EventArgs e)24
{25
if(!IsPostBack)26
{27
BindRepeater();28
}29
}30
private DataView GetData31
{32
get33
{ 34
return Cache["_data"] as DataView;35
}36
set37
{38
if( Cache["_data"]==null)39
Cache["_data"]=value;40
}41
}42
Web 窗体设计器生成的代码64

65
private SqlConnection Conn()66
{67
return new SqlConnection(CONNECTIONSTRING);68
}69

70
private void BindRepeater()71
{72
DataSet ds=new DataSet();73
SqlDataAdapter da=new SqlDataAdapter("Select * From Employees",Conn());74
da.Fill(ds);75
GetData=ds.Tables[0].DefaultView;76
rpOrder.DataSource=ds.Tables[0];77
rpOrder.DataBind();78
}79

80
private void rpOrder_ItemCommand(object source, RepeaterCommandEventArgs e)81
{82
if(e.Item.ItemType==ListItemType.Header)83
{ 84
LinkButton lkbtnSort=(LinkButton)e.Item.FindControl(e.CommandName.Trim()); 85
if(ViewState[e.CommandName.Trim()]==null)86
{87
ViewState[e.CommandName.Trim()]="ASC"; 88
lkbtnSort.Text=lkbtnSort.Text+"▲";89
}90
else91
{92
if(ViewState[e.CommandName.Trim()].ToString().Trim()=="ASC")93
{94
ViewState[e.CommandName.Trim()]="DESC"; 95
if(lkbtnSort.Text.IndexOf("▲")!=-1)96
lkbtnSort.Text=lkbtnSort.Text.Replace("▲","▼");97
else98
lkbtnSort.Text=lkbtnSort.Text+"▼";99
}100
else101
{102
ViewState[e.CommandName.Trim()]="ASC"; 103
if(lkbtnSort.Text.IndexOf("▼")!=-1)104
lkbtnSort.Text=lkbtnSort.Text.Trim().Replace("▼","▲");105
else106
lkbtnSort.Text=lkbtnSort.Text+"▲";107
}108
}109
ViewState["text"]=lkbtnSort.Text;110
ViewState["id"]=e.CommandName.Trim();111
DataView dv=GetData;112
dv.Sort=e.CommandName.ToString().Trim()+" "+ViewState[e.CommandName.Trim()].ToString().Trim();113
rpOrder.DataSource=dv;114
rpOrder.DataBind();115
} 116
}117

118
private void rpOrder_ItemDataBound(object sender, RepeaterItemEventArgs e)119
{120
if(e.Item.ItemType==ListItemType.Header)121
{122
if(ViewState["id"]!=null)123
{ 124
LinkButton lkbtnSort=(LinkButton)e.Item.FindControl(ViewState["id"].ToString().Trim()); 125
lkbtnSort.Text=ViewState["text"].ToString();126
}127
}128
}129
}130
}131

