|
 |
aspx thread: Repeater DataBind - Container.DataItem error
Message #1 by "h. branyan" <hb@t...> on Tue, 25 Jun 2002 15:57:51
|
|
Here's the code:
page_load
-------------------------------------------
void Page_Load(Object sender, EventArgs e) {
if (Page.IsPostBack != true) {
DataSet dsNav = new DataSet();
dsNav.ReadXml("/docs/navigation.xml");
NavRepeater.DataSource = dsNav;
NavRepeater.DataBind();
}
}
-------------------------------------------
HTML
-------------------------------------------
<asp:Repeater runat="server" id="NavRepeater">
<ItemTemplate>
<asp:HyperLink id="HyperLink1"
Text='<%# DataBinder.Eval(Container.DataItem("displayName")) %>'
NavigateUrl='<%# DataBinder.Eval(Container.DataItem("linkUrl")) %>'
runat="server" />
</ItemTemplate>
</asp:Repeater>
-------------------------------------------
Excerpt from XML
-------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<HeaderNavigation>
<Link>
<displayName>Site Map</displayName>
<linkUrl>/sitemap.aspx</linkUrl>
</Link>
</HeaderNavigation>
-------------------------------------------
You can take a look at http://209.16.254.217/ to see the Header navigation
links I want to build with this code. Right now on this page they are hard-
coded. But when I try the above code in my _header.ascx file, I get the
following error:
Server Error in '/' Application.
---------------------------------------------------------------------------
-----
Compilation Error
Description: An error occurred during the compilation of a resource
required to service this request. Please review the following specific
error details and modify your source code appropriately.
Compiler Error Message:
CS0118: 'System.Web.UI.WebControls.RepeaterItem.DataItem' denotes
a 'property' where a 'method' was expected
Source Error:
Line 41: <asp:Repeater runat="server" id="NavRepeater">
Line 42: <ItemTemplate>
Line 43: <asp:HyperLink id="HyperLink1"
Line 44: Text='<%# DataBinder.Eval
(Container.DataItem("displayName")) %>'
Line 45: NavigateUrl='<%# DataBinder.Eval
(Container.DataItem("linkUrl")) %>'
Can someone point me in the right direction here? What am I doing wrong?
Thank you,
H. Branyan
Message #2 by "Subraya Hegde" <subrayah@i...> on Wed, 26 Jun 2002 10:02:59 +0530
|
|
Hi Branyan,
this is the right method of using the Container.DataItem.
<asp:Repeater runat="server" id="NavRepeater">
<ItemTemplate>
<asp:HyperLink id="HyperLink1"
Text='<%# DataBinder.Eval(Container.DataItem,"displayName") %>'
NavigateUrl='<%# DataBinder.Eval(Container.DataItem,"linkUrl") %>'
runat="server" />
</ItemTemplate>
</asp:Repeater>
And check once again for the path of the XML file in your Page_Load() event.
if (Page.IsPostBack != true) {
DataSet dsNav = new DataSet();
dsNav.ReadXml ("/docs/navigation.xml"); (*)
NavRepeater.DataSource = dsNav;
NavRepeater.DataBind();
}
(*) escape sequence should be correctly defined.
It will work...
Cheers,
HegdeS.
Message #3 by "h. branyan" <hb@t...> on Wed, 26 Jun 2002 08:19:00 -0400
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html;
charset=3Diso-8859-1">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version
5.5.2653.12">
<TITLE>Re: Repeater DataBind - Container.DataItem error</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=3D2>I see where my error is - Thanks for the help!</FONT>
</P>
<P><FONT SIZE=3D2>Also, I had to add Server.MapPath to the ReadXml
source, as you foresaw,</FONT>
<BR><FONT SIZE=3D2>like this:</FONT>
<BR><FONT
SIZE=3D2>dsNav.ReadXml(Server.MapPath("/docs/navigation.xml"))
;</FONT>
</P>
<P><FONT SIZE=3D2>-HB</FONT>
</P>
<P><FONT SIZE=3D2>----- Original Message -----</FONT>
<BR><FONT SIZE=3D2>From: "Subraya Hegde"
<subrayah@i...></FONT>
<BR><FONT SIZE=3D2>To: <aspx@p...></FONT>
<BR><FONT SIZE=3D2>Cc: <hb@t...></FONT>
<BR><FONT SIZE=3D2>Sent: Wednesday, June 26, 2002 12:32 AM</FONT>
<BR><FONT SIZE=3D2>Subject: RE: Repeater DataBind - Container.DataItem
error</FONT>
</P>
<BR>
<P><FONT SIZE=3D2>> Hi Branyan,</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>> this is the right method of using the
Container.DataItem.</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>> <asp:Repeater runat=3D"server"
id=3D"NavRepeater"></FONT>
<BR><FONT SIZE=3D2>>
<ItemTemplate></FONT>
<BR><FONT SIZE=3D2>>
<asp:HyperLink id=3D"HyperLink1"</FONT>
<BR><FONT
SIZE=3D2>>  
; Text=3D'<%#
DataBinder.Eval(Container.DataItem,"displayName")
%>'</FONT>
<BR><FONT
SIZE=3D2>>  
; NavigateUrl=3D'<%#
DataBinder.Eval(Container.DataItem,"linkUrl")</FONT>
<BR><FONT SIZE=3D2>%>'</FONT>
<BR><FONT SIZE=3D2>>
runat=3D"server" /></FONT>
<BR><FONT SIZE=3D2>>
</ItemTemplate></FONT>
<BR><FONT SIZE=3D2>> </asp:Repeater></FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>> And check once again for the path of the XML
file in your Page_Load()</FONT>
<BR><FONT SIZE=3D2>event.</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>> if
(Page.IsPostBack !=3D true) {</FONT>
<BR><FONT SIZE=3D2>> DataSet dsNav =3D new
DataSet();</FONT>
<BR><FONT SIZE=3D2>> dsNav.ReadXml
("/docs/navigation.xml"); (*)</FONT>
<BR><FONT SIZE=3D2>> NavRepeater.DataSource
=3D dsNav;</FONT>
<BR><FONT SIZE=3D2>> NavRepeater.DataBind();</FONT>
<BR><FONT SIZE=3D2>>
}</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>> (*) escape sequence should be correctly
defined.</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>> It will work...</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>> Cheers,</FONT>
<BR><FONT SIZE=3D2>> HegdeS.</FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>></FONT>
<BR><FONT SIZE=3D2>***** Disclaimer
******************************************************************* 
; The information in this e-mail is intended only for
the person or entity to which it is addressed and contains CONFIDENTIAL
and/or PRIVILEGED material. Any review, re-transmission,
dissemination or other use by other persons or entities is
strictly prohibited. If you received this e-mail in error, please
contact the sender and delete the material from any computer.
Thank you.
************************************************************************
************</FONT></P>
</BODY>
</HTML>
|
|
 |