Introduction:
In this article,i am going to explain about how to effectively use repeater control in asp.net applications.
And also i am going to cover,
How to data paging in repeater control,
How to sort a data in repeater control,
How to filter a data in repeater control,
Talking about Repeater Control events,
Main:
What is repeater control?
The Repeater control in ASP.NET is a data-bound container control that can be used to automate the display of a collection
of repeated list items. These items can be bound to either of the following data sources:
1.Database Table
2.XML File
The functionalities are just similar to datagrid and datalist,but here we are going to use a pure templates for defigning
all the things,
The Repeater control contains the following five templates:
1.Header Template
2.ItemTemplate
3.AlternatingltemTemplate
4.Separator Template
5.AlternatingltemTemplate
6.FooterTemplate
The templates are simply a html blocks,
Sample program for displaying data in repeater control,
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table border="1">
<tr>
<th>
<asp:Label id="Emp_Code" Text="Employee Code"
runat="server" /></th>
<th>
<asp:Label id="Emp_Name" Text="Employee Name"
runat="server" /></th>
<th>
<asp:Label id="Emp_Salary" Text="Employee Salary"
runat="server" /></th>
<th>
<asp:Label id="Dept_Code" Text="Department Name"
runat="server" /> </th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr bgcolor="#0xbbcc">
<td>
<asp:CheckBox id="chkbox1" runat="server"
Checked="false" Text = '<%#
DataBinder.Eval(Container.DataItem,
"EmpCode")%>'></asp:CheckBox>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "EmpName")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "Salary")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "DeptName")%>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<table border="0" width="300px">
<tr>
<asp:Button ID="btnClick" runat="server" Width="100px"
Text="Click here" OnClick="btnClick_Click" /></td>
<td>
<asp:Label ID="lblDisplay" runat="server"
Width="200px"></asp:Label> </td>
</tr>
</form>
<form id="form1" runat="server"> <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> <table border="1"> <tr> <th> <asp:Label id="Emp_Code" Text="Employee Code" runat="server" /></th> <th> <asp:Label id="Emp_Name" Text="Employee Name" runat="server" /></th> <th> <asp:Label id="Emp_Salary" Text="Employee Salary" runat="server" /></th> <th> <asp:Label id="Dept_Code" Text="Department Name" runat="server" /> </th> </tr> </HeaderTemplate> <ItemTemplate> <tr bgcolor="#0xbbcc"> <td> <asp:CheckBox id="chkbox1" runat="server" Checked="false" Text = '<%# DataBinder.Eval(Container.DataItem, "EmpCode")%>'></asp:CheckBox> </td> <td> <%# DataBinder.Eval(Container.DataItem, "EmpName")%> </td> <td> <%# DataBinder.Eval(Container.DataItem, "Salary")%> </td> <td> <%# DataBinder.Eval(Container.DataItem, "DeptName")%> </td> </tr> </ItemTemplate> </asp:Repeater> <table border="0" width="300px"> <tr> <asp:Button ID="btnClick" runat="server" Width="100px" Text="Click here" OnClick="btnClick_Click" /></td> <td> <asp:Label ID="lblDisplay" runat="server" Width="200px"></asp:Label> </td> </tr> </form> |
In Code behind,
DataManager dataManager = new DataManager();
Repeater1.DataSource = dataManager.EmployeeDetails();
totalRecords = dataManager.EmployeeDetails().Count;
Repeater1.DataBind();
DataManager dataManager = new DataManager(); Repeater1.DataSource = dataManager.EmployeeDetails(); totalRecords = dataManager.EmployeeDetails().Count; Repeater1.DataBind(); |
Paging in Repeater Control,
Before start paging in repeater control we need to create navigation button,
protected void FirstPage(object sender, EventArgs e)
{
currentPageIndex = 0;
BindingData(currentPageIndex, PAGESIZE);
}
protected void LastPage(object sender, EventArgs e)
{
currentPageIndex = maxNumberOfPages;
BindingData(currentPageIndex, PAGESIZE);
}
protected void PreviousPage(object sender, EventArgs e)
{
currentPageIndex--;
if (currentPageIndex < 0)
currentPageIndex = 0;
BindingData(currentPageIndex, PAGESIZE);
}
protected void NextPage(object sender, EventArgs e)
{
currentPageIndex++;
if (currentPageIndex > maxNumberOfPages)
currentPageIndex = maxNumberOfPages;
BindingData(currentPageIndex, PAGESIZE);
}
private void BindingData(int currentPageIndex, int pageSize)
{
DataManager dataManager = new DataManager();
PagedDataSource pagedDataSource = new PagedDataSource();
pagedDataSource.PageSize = pageSize;
pagedDataSource.CurrentPageIndex = currentPageIndex;pagedDataSource.AllowPaging = true;
pagedDataSource.DataSource = dataManager.EmployeeDetails();
Repeater1.DataSource = pagedDataSource;
Repeater1.DataBind();
}
protected void FirstPage(object sender, EventArgs e) { currentPageIndex = 0; BindingData(currentPageIndex, PAGESIZE); } protected void LastPage(object sender, EventArgs e) { currentPageIndex = maxNumberOfPages; BindingData(currentPageIndex, PAGESIZE); } protected void PreviousPage(object sender, EventArgs e) { currentPageIndex--; if (currentPageIndex < 0) currentPageIndex = 0; BindingData(currentPageIndex, PAGESIZE); } protected void NextPage(object sender, EventArgs e) { currentPageIndex++; if (currentPageIndex > maxNumberOfPages) currentPageIndex = maxNumberOfPages; BindingData(currentPageIndex, PAGESIZE); } private void BindingData(int currentPageIndex, int pageSize) { DataManager dataManager = new DataManager(); PagedDataSource pagedDataSource = new PagedDataSource(); pagedDataSource.PageSize = pageSize; pagedDataSource.CurrentPageIndex = currentPageIndex;pagedDataSource.AllowPaging = true; pagedDataSource.DataSource = dataManager.EmployeeDetails(); Repeater1.DataSource = pagedDataSource; Repeater1.DataBind(); } |
Sorting in repeater control,
We cannot do auto sorting (expression method like datagridview and datagrid) in repeater control,
The best way to perform sorting in repeater is just the sort column in sql query orderby clause.
Filtering data in repeater control,
For filtering functionality also we need sql query help,Just collect the filter expression and
forward to sql,
for ex,
string filterexpression = “IT”;
string sql = “Select * from emp where deptname =” + filterexpression;
Repeater control events:
The repeater control events are same like datagrid and gridview,there are,
1.DataBinding –> For binding data,
2.ItemCreated –> For attaching some logic while binding data,
3.ItemDataBound –> Iterator event,
4.ItemCommand –> Attached on one time,but will fire on each and every execution (for ex, EditCommand),
These are really the well known events for web control users,
for ex,
protected void Repeater1_ItemDataBound(object sender,
System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
e.Item[0].string == "Hi"
}
}
protected void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item) { e.Item[0].string == "Hi" } } |
Conclusion:
Hope this helps,
Happy Coding.
1 Comments.