This tutorial will explain how to implement sorting in repeater control using
Linq and this is a simple way of sorting within the repeater control.
Source code for aspx page:
<table
border="1" width="60%">
<tr
style="background-color:#669acc;">
<td>ID
<asp:LinkButton
ID="LinkButton3"
runat="server"
onclick="LinkButton3_Click">
<img
src="arrowdown.GIF"
alt="descending"
/>
</asp:LinkButton>
<asp:LinkButton
ID="LinkButton1"
runat="server"
onclick="LinkButton1_Click">
<img
src="arrowup.GIF"
alt="ascending"
/></asp:LinkButton>
</td>
<td>Name
</td>
<td>Country
</td>
</tr>
<asp:Repeater
ID="Repeater1"
runat="server">
<ItemTemplate>
<tr
style="background-color:#f2f7fd;">
<td
>
<%#
Eval("sortid")
%></td>
<td><%#
Eval("Name")
%></td>
<td><%#
Eval("Country")
%></td></tr>
</ItemTemplate>
</asp:Repeater>
</table>
Code behind looks like:
connection cnn =
new connection();
private
void BindRepeater()
{
using (var
db = cnn.ConDB())
{
var select =
from table in
db.SortTables
select table;
Repeater1.DataSource = select;
Repeater1.DataBind();
}
}
Above method is used to bind the repeater. If you call the BindRepeater() the
output looks like
![image1.gif]()
Sorting is done while binding the datasource to the repeater. You can sort the
columns based on which column you want. Here I used ID column to sort.
private
void sortDescending()
{
using (var
db = cnn.ConDB())
{
var select =
from sort in
db.SortTables
select sort;
Repeater1.DataSource = select.OrderByDescending(item => item.SortID);
Repeater1.DataBind();
LinkButton3.Visible = false;
LinkButton1.Visible = true;
}
}
select.OrderByDescending(item => item.SortID); where sort ID is the ID column.
Once you call the sortDescending(), the output looks as
![image2.gif]()
You can observe the rows are changed according to the descending order of the ID
column.
Similarly you can also sort in ascending order using below code
private
void sortAscending()
{
using (var
db = cnn.ConDB())
{
var select =
from sort in
db.SortTables
select sort;
Repeater1.DataSource = select.OrderBy(item => item.SortID);
//Sort using Name select.OrderBy(item => item.Name);
//Similarly using Country select.OrderBy(item => item.Country);
Repeater1.DataBind();
LinkButton1.Visible = false;
LinkButton3.Visible = true;
}
}
If you call the sortAscending() method the columns are arranged in ascending
order and the output looks as
![image3.gif]()
For the complete code please check the attached file.
In this post I have explained about How to bind repeater and sort the columns in
the repeater using Linq.
Thanks !