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
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
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
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 !