Wrox Home  
Search P2P Archive for: Go

  Return to Index  

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(&quot;/docs/navigation.xml&quot;))
;</FONT>
</P>

<P><FONT SIZE=3D2>-HB</FONT>
</P>

<P><FONT SIZE=3D2>----- Original Message -----</FONT>
<BR><FONT SIZE=3D2>From: &quot;Subraya Hegde&quot; 
&lt;subrayah@i...&gt;</FONT>
<BR><FONT SIZE=3D2>To: &lt;aspx@p...&gt;</FONT>
<BR><FONT SIZE=3D2>Cc: &lt;hb@t...&gt;</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>&gt; Hi Branyan,</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt; this is the right method of using the 
Container.DataItem.</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt; &lt;asp:Repeater runat=3D&quot;server&quot; 
id=3D&quot;NavRepeater&quot;&gt;</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;ItemTemplate&gt;</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;asp:HyperLink id=3D&quot;HyperLink1&quot;</FONT>
<BR><FONT 
SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
; Text=3D'&lt;%# 
DataBinder.Eval(Container.DataItem,&quot;displayName&quot;) 
%&gt;'</FONT>
<BR><FONT 
SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp
; NavigateUrl=3D'&lt;%# 
DataBinder.Eval(Container.DataItem,&quot;linkUrl&quot;)</FONT>
<BR><FONT SIZE=3D2>%&gt;'</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
runat=3D&quot;server&quot; /&gt;</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&lt;/ItemTemplate&gt;</FONT>
<BR><FONT SIZE=3D2>&gt; &lt;/asp:Repeater&gt;</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt; 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>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 
(Page.IsPostBack !=3D true) {</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; DataSet dsNav =3D new 
DataSet();</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; dsNav.ReadXml 
(&quot;/docs/navigation.xml&quot;);&nbsp;&nbsp; (*)</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp; NavRepeater.DataSource 
=3D dsNav;</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp; NavRepeater.DataBind();</FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
}</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt; (*) escape sequence should be correctly 
defined.</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt; It will work...</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt; Cheers,</FONT>
<BR><FONT SIZE=3D2>&gt; HegdeS.</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>&gt;</FONT>
<BR><FONT SIZE=3D2>***** Disclaimer 
*******************************************************************&nbsp
;&nbsp;&nbsp;&nbsp; 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.&nbsp; Any review, re-transmission, 
dissemination or other use by other persons or&nbsp; entities is 
strictly prohibited. If you received this e-mail in error, please 
contact the sender and delete the material from any computer.&nbsp; 
Thank you.&nbsp;&nbsp; 
************************************************************************
************</FONT></P>

</BODY>
</HTML>

  Return to Index