Repeater Control and Data Binding
- ASP .Net and C#
Introduction:
Data Binding is the process of creating a
link between the data source and the presentation UI to display the data. ASP
.Net provides rich and wide variety of controls which can be bound to the data.
This model of binding data with the data source reduces a lot of code complexity
and increases the ease of maintenance of code. This article looks at how to use
this data binding feature for a Repeater control in ASP .Net with C#
code.
Repeater Control in ASP .Net:
A Repeater control is a light weight
control which can be used for simple reporting purposes. It supports basic
event-handling like Init, Load, Unload etc., This also
supports some basic formatting of data and can be presented to the user. A Repeater
control offers limited level of data editing or selecting capabilities. For such editing
and updates ASP .Net offers DataList and DataGrid controls.
A Repeater control can be used to
build small and Flexible reports with the templates for the items. It supports
the following five templates.
- HeaderTemplate : Can be used to create the
Header Rows of the Table data being presented by Repeater control.
- FooterTemplate : Can be used to create the
Footer Rows of the Table data being presented by Repeater control.
- ItemTemplate : Used for formatting the Items
and rows to be displayed.
- AlternatingItemTemplate : Alternating items
formatting.
- SeparatorTemplate : Styles for separating rows
and columns.
There are many ways in which a
control in ASP .Net can be formatted. It is up to the imagination of the
programmer to come up with nice formats. For example the Footer rows can be
manipulated in such a way that, it can show the summary values or totals etc.,
Repeater Syntax:
<asp:Repeater id="idrepeater"
runat="server" Datasource="<%# dataset %>"
DataMember="table-inside-dataset">
<HeaderTemplate>..Header Format ..</HeaderTemplate>
<ItemTemplate> .. Item formats .. </ItemTemplate>
</asp:Repeater>
|
As given above, the syntax is
simply the Repeater tag with the Template types. These templates can be
formatted with ItemStyle tags also.
Using DataBinder.Eval method:
The System.Web.UI.DataBinder class
provides a useful static method DataBinder.Eval, which can be used to evaluate
the data at run time using late binding. This function can be used with the
Visual Studio IDE or can be manually coded as
<%#
DataBinder.Eval(Container.DataItem,"FieldName","Format")
%>
|
This evaluates and returns the data
at run time. This can be used with Repeater, DataList and DataGrid controls
though there will be a performance penalty because of the late binding mechanism
used.
Creating a Sample Program with Repeater Control:
Let's create a small sample program
with the Repeater control.
- Add a new Webform in an Visual Studio
Asp .net application.
- Add a Repeater control to the application. Let
us assume that the id of the control is Repeater1.
- Insert the following lines of formatting code
in between the opening and closing tags of the <asp:Repeater> control.
-
<HeaderTemplate>
<table cellpadding="5" cellspacing="2" >
<tr bgcolor=Gray>
<td><b>CustomerName</b></td>
<td><b>Country</b></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# DataBinder.Eval(Container.DataItem,"CustomerName") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"Country") %></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr bgcolor="#ccccff">
<td><%# DataBinder.Eval(Container.DataItem,"CustomerName") %></td>
<td><%# DataBinder.Eval(Container.DataItem,"Country") %></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
|
- The above code just adds the repeater control
with formatting for the header rows, data rows and the footer rows. The
HeaderTemplate starts the <table> tag with the table heading and the
FooterTemplate closes it.
- Now, Add the following code inside the
Webform1.aspx.cs, Page_Load event.
DataSet ds = new DataSet();
DataTable dt = ds.Tables.Add("Customer");
dt.Columns.Add("CustomerName",Type.GetType("System.String"));
dt.Columns.Add("Country",Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr[0]="Testcustomer1";
dr[1]="USA";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0]="Testcustomer2";
dr[1]="UK";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0]="Testcustomer3";
dr[1]="GERMANY";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0]="Testcustomer4";
dr[1]="FRANCE";
dt.Rows.Add(dr);
//Bind the data to the Repeater
Repeater1.DataSource = ds;
Repeater1.DataMember = "Customer";
Repeater1.DataBind();
|
- The above code creates a dataset to be used
with the Repeater control. The repeater's datasource is the Dataset
created and the Data member is mentioned as the Table which is created
along with the dataset. This enables the Repeater to create the list of
items from this customer table.
- Now build the application in Visual Studio
.Net and load this page. The data will be shown in a tabular format.
The above sample shows data binding
from a statically created data set only. This can be very easily extended to a
DataSet generated from database tables, xml files or even DataView s.
Ultimately, this Repeater control
can be used for light weight and simple report generation. This has only a very simple level event handling
capabilities. Also there is a performance penalty because of
using the DataBinder.Eval methods, this can be considered for data which are not
modified frequently. If it is a large amount of data, then caching may be
considered to improve the performance, though there are some other factors may have to be
considered and not discussed here.
Attachments:
Project Files : RepeaterSample.zip