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);
}

21 Comments

Comments have been disabled for this content.