<%# DataBinder.Eval(Container.DataItem, "FirstName") %> in a fieldof a web server co
Hello everybody,
I need to use bound variables in a field of a web server control which
is inside a template. Many sources in the Web say it works, but for me
it does not, so I have made a test page :
<% [at] Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public class Bidon
{
public string OwnerId { get { return "111"; } }
public string FirstName { get { return "Alberto"; } }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
System.Collections.Generic.List<Bidon> listBidon =
new System.Collections.Generic.List<Bidon>();
listBidon.Add(new Bidon());
listBidon.Add(new Bidon());
RepeaterCollection.DataSource = listBidon;
RepeaterCollection.DataBind();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Ptitle</title>
</head>
<body>
<form id="form1" runat="server">
<h2>
Test Repeater and templates</h2>
<asp:Repeater ID="RepeaterCollection" runat="server">
<ItemTemplate>
ItemTemplate : <%# DataBinder.Eval(Container.DataItem,
"OwnerId") %>
- <%# DataBinder.Eval(Container.DataItem, "FirstName") %>
<asp:HyperLink ID="HyperLink2" runat="server"
Text='eval (<%# DataBinder.Eval(Container.DataItem,
"OwnerId") %>)' />
<asp:Label ID="Label2" runat="server"
Text='eval (<%# DataBinder.Eval(Container.DataItem,
"FirstName") %>)' />
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
The result I obtain is below : Eval() does not work inside the asp:label
or the asp:hyperlink Text fields :
Test Repeater and templates
ItemTemplate : 111 - Alberto eval () eval ()
ItemTemplate : 111 - Alberto eval () eval ()
Can anyone help me please ?
Sincerely,
Abargaddon
RE: <%# DataBinder.Eval(Container.DataItem, "FirstName") %> in a field
Howdy,
In AP.NET 2.0 you can use Eval instead of DataBinder.Eval. In addition
remember data bound expressions for server controls must be defined in entire
attribute:
<asp:Label runat="server" Text='<%# "prefix " + Eval("whatever") %>'/>
NOT
<asp:Label runat="server" Text='prefix<%# Eval("whatever") %>'/>
Anyway:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Ptitle</title>
</head>
<body>
<form id="form1" runat="server">
<h2>
Test Repeater and templates</h2>
<asp:Repeater ID="RepeaterCollection" runat="server">
<ItemTemplate>
ItemTemplate : <%# DataBinder.Eval(Container.DataItem,
"OwnerId") %>
- <%# DataBinder.Eval(Container.DataItem, "FirstName") %>
<asp:HyperLink ID="HyperLink2" runat="server" Text='<%#
DataBinder.Eval(Container.DataItem, "OwnerId") %>' />
<asp:Label ID="Label2" runat="server" Text='<%#
String.Format(DataBinder.Eval(Container.DataItem, "FirstName"), "Surrounding
{0} text" %>' />
<asp:Label ID="Label3" runat="server" Text='<%# Eval("FirstName") %>'
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
Hope it helps
--
Milosz
"abargaddon" wrote:
> Hello everybody,
> I need to use bound variables in a field of a web server control which
> is inside a template. Many sources in the Web say it works, but for me
> it does not, so I have made a test page :
>
> <% [at] Page Language="C#" %>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <script runat="server">
>
> public class Bidon
> {
> public string OwnerId { get { return "111"; } }
> public string FirstName { get { return "Alberto"; } }
> }
>
> protected void Page_Load(object sender, EventArgs e)
> {
> if (!this.IsPostBack)
> {
> System.Collections.Generic.List<Bidon> listBidon =
> new System.Collections.Generic.List<Bidon>();
> listBidon.Add(new Bidon());
> listBidon.Add(new Bidon());
> RepeaterCollection.DataSource = listBidon;
> RepeaterCollection.DataBind();
> }
> }
>
> </script>
>
> <html xmlns="http://www.w3.org/1999/xhtml" >
> <head runat="server">
> <title>Ptitle</title>
> </head>
> <body>
> <form id="form1" runat="server">
> <h2>
> Test Repeater and templates</h2>
> <asp:Repeater ID="RepeaterCollection" runat="server">
> <ItemTemplate>
> ItemTemplate : <%# DataBinder.Eval(Container.DataItem,
> "OwnerId") %>
> - <%# DataBinder.Eval(Container.DataItem, "FirstName") %>
> <asp:HyperLink ID="HyperLink2" runat="server"
> Text='eval (<%# DataBinder.Eval(Container.DataItem,
> "OwnerId") %>)' />
> <asp:Label ID="Label2" runat="server"
> Text='eval (<%# DataBinder.Eval(Container.DataItem,
> "FirstName") %>)' />
>
> </ItemTemplate>
> </asp:Repeater>
> </form>
> </body>
> </html>
>
>
> The result I obtain is below : Eval() does not work inside the asp:label
> or the asp:hyperlink Text fields :
>
> Test Repeater and templates
> ItemTemplate : 111 - Alberto eval () eval ()
> ItemTemplate : 111 - Alberto eval () eval ()
>
> Can anyone help me please ?
>
> Sincerely,
> Abargaddon
>