<%# 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
abargaddon [ Mo, 28 Januar 2008 22:03 ] [ ID #1917949 ]

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
>
mily242 [ Di, 29 Januar 2008 01:01 ] [ ID #1918810 ]
Microsoft » microsoft.public.dotnet.framework.aspnet » <%# DataBinder.Eval(Container.DataItem, "FirstName") %> in a fieldof a web server co

Vorheriges Thema: flash flv player with an AJAX playlist
Nächstes Thema: ASP.NET Data Tutorials are Videos now!!--check this out