The following code snippet is an example of
data-binding inside Repeater control:
<asp:Repeater
ID="Repeater1"
runat="server">
<ItemTemplate>
<%#
DataBinder.Eval(Container.DataItem,
"EmployeeName")
%>
</ItemTemplate>
</asp:Repeater>
The above code is working fine. Now we place an
UpdatePanel inside ItemTemplate and binding the same information again
<asp:Repeater
ID="Repeater1"
runat="server">
<ItemTemplate>
<asp:UpdatePanel
ID="UpdatePanel1"
runat="server">
<ContentTemplate>
<%#
DataBinder.Eval(Container.DataItem,
"EmployeeName")
%>
</ContentTemplate>
</asp:UpdatePanel>
</ItemTemplate>
</asp:Repeater>
In the first example (without UpdatePanel)
"Container" refers to Repeater control, while in second example "Container"
refers to UpdatePanel.
This time, you'll get an error
'System.Web.UI.Control' does not contain a definition for
'DataItem' and no extension method 'DataItem' accepting a first argument of type
'System.Web.UI.Control' could be found (are you missing a using directive or an
assembly reference?)
To get rid from this, we'll use Interface "IDataItemContainer"
which enables data-bound control containers to identify a data item object for
simplified data-binding operations. And Change the underlined code to
<%#
DataBinder.Eval(((IDataItemContainer)Container).DataItem,
"EmployeeName")
%>
Note: I used Repeater in the examples, written
above. However, the same is applicable for other Data-Bound controls, as
GridView, DataList, DataGrid, etc.