Sample Code: Bidirectional Sorting in ASP.NET Repeater control
.aspx
<asp:Repeater ID="Repeater1" Runat="server"
EnableViewState="False">
<ItemTemplate>
<table
width="100%" cellspacing="0" cellpadding="0">
<tr>
<td
width=25%><%# DataBinder.Eval(Container.DataItem,
"Employeeid") %></td>
<td width=25%
><%# DataBinder.Eval(Container.DataItem,
"FirstName") %></td>
<td width=25%
><%# DataBinder.Eval(Container.DataItem, "LastName")
%></td>
<td width=25% ><%#
DataBinder.Eval(Container.DataItem, "Title")
%></td>
</tr>
</table>
</ItemTemplate>
<HeaderTemplate>
<table
width="100%" cellspacing="0" cellpadding="0">
<tr>
<td
width=25%>
<asp:LinkButton ID="lnkEmployeeid"
Runat="server"
OnClick="SortEmployeeIdClick">Employeeid</asp:LinkButton>
</td>
<td
width=25%>
<asp:LinkButton ID="lnkFirstName"
Runat="server"
OnClick="SortFirstNameClick">FirstName</asp:LinkButton>
</td>
<td
width=25%>
<asp:LinkButton ID="lnkLastName"
Runat="server"
OnClick="SortLastNameClick">LastName</asp:LinkButton>
</td>
<td
width=25% >
<asp:LinkButton ID="lnkTitle"
Runat="server"
OnClick="SortTitleClick">Title</asp:LinkButton>
</td>
</tr>
</table>
</HeaderTemplate>
</asp:Repeater>
VB.NET
Dim SortField As String
Dim myconnection As
SqlConnection
Dim myda As SqlDataAdapter
Dim
ds As DataSet
Dim strConn As String
Dim
SQLStmt As String = "Select * from Employees "
Private Sub Page_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
’ Put user code to initialize the page here
BindData()
End Sub ’Page_Load
Sub BindData()
strConn =
"Server=localhost;uid=sa;password=;database=northwind;"
myconnection = New SqlConnection(strConn)
myda = New SqlDataAdapter(SQLStmt, myconnection)
ds = New DataSet
myda.Fill(ds,
"AllTables")
Repeater1.DataSource = ds
Repeater1.DataBind()
End Sub ’BindData
Sub SortData(ByVal SortExpression As String)
If ViewState("SortOrder") Is Nothing Then
ViewState("SortOrder") = " ASC"
Else
If ViewState("SortOrder").ToString() = " ASC" Then
ViewState("SortOrder") = " DESC"
Else
ViewState("SortOrder") = "
ASC"
End If
End If
SQLStmt = SQLStmt + " ORDER BY " +
SortExpression.ToString() + " " +
ViewState("SortOrder")
BindData()
End Sub
’SortData
Protected Sub SortEmployeeIdClick(ByVal sender As Object,
ByVal e As EventArgs)
SortField =
"EmployeeId"
SortData(SortField)
End
Sub ’SortEmployeeIdClick
Protected Sub SortFirstNameClick(ByVal sender As Object,
ByVal e As EventArgs)
SortField =
"FirstName"
SortData(SortField)
End Sub
’SortFirstNameClick
Protected Sub SortLastNameClick(ByVal sender As Object,
ByVal e As EventArgs)
SortField =
"LastName"
SortData(SortField)
End Sub
’SortLastNameClick
Protected Sub SortTitleClick(ByVal sender As Object,
ByVal e As EventArgs)
SortField =
"Title"
SortData(SortField)
End Sub
’SortTitleClick
C#
string SortField;
SqlConnection myconnection ;
SqlDataAdapter myda ;
DataSet ds ;
String strConn ;
string SQLStmt= "Select *
from Employees ";
private void Page_Load(object sender, System.EventArgs
e)
{
// Put user code to initialize the page
here
BindData();
}
void BindData()
{
strConn =
"Server=localhost;uid=sa;password=;database=northwind;";
myconnection
=new SqlConnection(strConn);
myda = new
SqlDataAdapter(SQLStmt, myconnection);
ds = new
DataSet();
myda.Fill(ds, "AllTables");
Repeater1.DataSource
= ds;
Repeater1.DataBind();
}
void SortData(string SortExpression)
{
if
(ViewState["SortOrder"] ==null)
{
ViewState["SortOrder"]
= " ASC";
}
else if
(ViewState["SortOrder"].ToString () == " ASC" )
{
ViewState["SortOrder"]
= " DESC";
}
else
{
ViewState["SortOrder"]
= " ASC";
}
SQLStmt = SQLStmt + " ORDER BY " +
SortExpression.ToString () + " " +
ViewState["SortOrder"];
BindData();
}
protected void SortEmployeeIdClick(object sender
,EventArgs e )
{
SortField =
"EmployeeId";
SortData (SortField);
}
protected void SortFirstNameClick(object sender
,EventArgs e )
{
SortField =
"FirstName";
SortData (SortField);
}
protected void SortLastNameClick(object sender
,EventArgs e )
{
SortField =
"LastName";
SortData (SortField);
}
protected void SortTitleClick(object sender
,EventArgs e )
{
SortField = "Title";
SortData
(SortField);
}