Nested repeater with 3 levels

E

Eirik Eldorsen

Im trying to make a nested repeater with 3 levels. I've successfully created
a nested repeater with 2 levels, but when adding the 3rd level I get an
InvalidCastException. What am I doing wrong?


Here is my code:


<asp:Repeater id="level1Repeater" runat="server">
<itemtemplate>
<a href="#"><%# DataBinder.Eval(Container.DataItem, "Title") %></a>
<br>
<asp:repeater id="level2Repeater" runat="server" datasource='<%#
((DataRowView)Container.DataItem).Row.GetChildRows("L1L2") %>' >
<itemtemplate>
&nbsp;<a href="#"><%# DataBinder.Eval(Container.DataItem,
"[\"Title\"]")%></a>
<br>
<asp:repeater id="level3Repeater" runat="server"
datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("L2L3")
%>' >
<itemtemplate>
&nbsp;&nbsp;<a href="#"><%#
DataBinder.Eval(Container.DataItem, "[\"Title\"]")%><br></a>
</itemtemplate>
</asp:Repeater>
</itemtemplate>
</asp:Repeater>
</itemtemplate>
</asp:Repeater>



Code Behind:

private void BindWebsites()
{
level1Repeater.DataSource = Websites.GetAll();
Page.DataBind();
}

public static DataTable GetAll()
{
.......
ds.Relations.Add("L1L2", ds.Tables["WebsitesL1"].Columns["ID"],
ds.Tables["WebsitesL2"].Columns["ParentID"]);
ds.Relations.Add("L2L3", ds.Tables["WebsitesL2"].Columns["ID"],
ds.Tables["WebsitesL3"].Columns["ParentID"]);

return ds.Tables["WebsitesL1"];
}
 
K

Karl Seguin

Erik:
Weird, everything looks good...While you shouln't have to, maybe if you move
the nesting to the OnItemCommand event you'll figure out hte problem:
http://openmymind.net/databinding/index.html#7.2

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/


Eirik Eldorsen said:
Im trying to make a nested repeater with 3 levels. I've successfully created
a nested repeater with 2 levels, but when adding the 3rd level I get an
InvalidCastException. What am I doing wrong?


Here is my code:


<asp:Repeater id="level1Repeater" runat="server">
<itemtemplate>
<a href="#"><%# DataBinder.Eval(Container.DataItem, "Title")
%> said:
<br>
<asp:repeater id="level2Repeater" runat="server" datasource='<%#
((DataRowView)Container.DataItem).Row.GetChildRows("L1L2") %>' >
<itemtemplate>
&nbsp;<a href="#"><%# DataBinder.Eval(Container.DataItem,
"[\"Title\"]")%></a>
<br>
<asp:repeater id="level3Repeater" runat="server"
datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("L2L3")
%>' >
<itemtemplate>
&nbsp;&nbsp;<a href="#"><%#
DataBinder.Eval(Container.DataItem, "[\"Title\"]")%><br></a>
</itemtemplate>
</asp:Repeater>
</itemtemplate>
</asp:Repeater>
</itemtemplate>
</asp:Repeater>



Code Behind:

private void BindWebsites()
{
level1Repeater.DataSource = Websites.GetAll();
Page.DataBind();
}

public static DataTable GetAll()
{
.......
ds.Relations.Add("L1L2", ds.Tables["WebsitesL1"].Columns["ID"],
ds.Tables["WebsitesL2"].Columns["ParentID"]);
ds.Relations.Add("L2L3", ds.Tables["WebsitesL2"].Columns["ID"],
ds.Tables["WebsitesL3"].Columns["ParentID"]);

return ds.Tables["WebsitesL1"];
}
 
E

Eirik Eldorsen

Thank you!

I moved the nesting to the OnItemDataBound event, and now everything works
:-D


Karl Seguin said:
Erik:
Weird, everything looks good...While you shouln't have to, maybe if you
move
the nesting to the OnItemCommand event you'll figure out hte problem:
http://openmymind.net/databinding/index.html#7.2

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/


Eirik Eldorsen said:
Im trying to make a nested repeater with 3 levels. I've successfully created
a nested repeater with 2 levels, but when adding the 3rd level I get an
InvalidCastException. What am I doing wrong?


Here is my code:


<asp:Repeater id="level1Repeater" runat="server">
<itemtemplate>
<a href="#"><%# DataBinder.Eval(Container.DataItem, "Title")
%> said:
<br>
<asp:repeater id="level2Repeater" runat="server" datasource='<%#
((DataRowView)Container.DataItem).Row.GetChildRows("L1L2") %>' >
<itemtemplate>
&nbsp;<a href="#"><%# DataBinder.Eval(Container.DataItem,
"[\"Title\"]")%></a>
<br>
<asp:repeater id="level3Repeater" runat="server"
datasource='<%#
((DataRowView)Container.DataItem).Row.GetChildRows("L2L3")
%>' >
<itemtemplate>
&nbsp;&nbsp;<a href="#"><%#
DataBinder.Eval(Container.DataItem, "[\"Title\"]")%><br></a>
</itemtemplate>
</asp:Repeater>
</itemtemplate>
</asp:Repeater>
</itemtemplate>
</asp:Repeater>



Code Behind:

private void BindWebsites()
{
level1Repeater.DataSource = Websites.GetAll();
Page.DataBind();
}

public static DataTable GetAll()
{
.......
ds.Relations.Add("L1L2", ds.Tables["WebsitesL1"].Columns["ID"],
ds.Tables["WebsitesL2"].Columns["ParentID"]);
ds.Relations.Add("L2L3", ds.Tables["WebsitesL2"].Columns["ID"],
ds.Tables["WebsitesL3"].Columns["ParentID"]);

return ds.Tables["WebsitesL1"];
}
 
A

acanel

(sorry but my english is so bad)
hey, you can send me code?

([email protected])
Karl Seguinwrote: Erik:
Weird, everything looks good...While you shouln't have to, maybe if you move
the nesting to the OnItemCommand event you'll figure out hte problem:
http://openmymind.net/databinding/index.html#7.2

Karl

--
MY ASP.Net tutorials
http://www.openmymind.net/


Im trying to make a nested repeater with 3 levels. I've successfully
created
a nested repeater with 2 levels, but when adding the 3rd level I get an
InvalidCastException. What am I doing wrong?


Here is my code:


asp:Repeater id="level1Repeater" runat="server"
itemtemplate
a href="#"><%# DataBinder.Eval(Container.DataItem, "Title")
%></a
br
asp:repeater id="level2Repeater" runat="server" datasource='<%#
((DataRowView)Container.DataItem).Row.GetChildRows("L1L2") %>'
itemtemplate
<a href="#"><%# DataBinder.Eval(Container.DataItem,
"[\"Title\"]")%></a
br
asp:repeater id="level3Repeater" runat="server"
datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("L2L3")
%>'
itemtemplate
<a href="#"><%#
DataBinder.Eval(Container.DataItem,
[\"Title\ said:
")%>"]
/itemtemplate
/asp:Repeater
/itemtemplate
/asp:Repeater
/itemtemplate
/asp:Repeater



Code Behind:

private void BindWebsites()
{
level1Repeater.DataSource = Websites.GetAll();
Page.DataBind();
}

public static DataTable GetAll()
{
.......
ds.Relations.Add("L1L2", ds.Tables["WebsitesL1"].Columns["ID"],
ds.Tables["WebsitesL2"].Columns["ParentID"]);
ds.Relations.Add("L2L3", ds.Tables["WebsitesL2"].Columns["ID"],
ds.Tables["WebsitesL3"].Columns["ParentID"]);

return ds.Tables["WebsitesL1"];
}
 
Joined
Sep 18, 2011
Messages
1
Reaction score
0
(sorry but my english is so bad)
hey, you can send me code?

([email protected])

> Karl Seguinwrote:

Erik:
> Weird, everything looks good...While you shouln't have to, maybe if

you move
> the nesting to the OnItemCommand event you'll figure out hte

problem:
> http://openmymind.net/databinding/index.html#7.2
>
> Karl
>
> --
> MY ASP.Net tutorials
> http://www.openmymind.net/
>
>
> "Eirik Eldorsen" <[email protected]> wrote in message
> news:%[email protected]...
> Im trying to make a nested repeater with 3 levels. I've

successfully
> created
> a nested repeater with 2 levels, but when adding the 3rd level I get

an
> InvalidCastException. What am I doing wrong?
>
>
> Here is my code:
>
>
> asp:Repeater id="level1Repeater" runat="server"
> itemtemplate
> a href="#"><%# DataBinder.Eval(Container.DataItem, "Title")
> %></a
> br
> asp:repeater id="level2Repeater" runat="server" datasource='<%#
> ((DataRowView)Container.DataItem).Row.GetChildRows("L1L2") %>'
> itemtemplate
> <a href="#"><%#

DataBinder.Eval(Container.DataItem,
> "[\"Title\"]")%></a
> br
> asp:repeater id="level3Repeater" runat="server"
> datasource='<%#

((DataRowView)Container.DataItem).Row.GetChildRows("L2L3")
> %>'
> itemtemplate
> <a href="#"><%#
> DataBinder.Eval(Container.DataItem,

"[\"Title\"]")%><br></a
> /itemtemplate
> /asp:Repeater
> /itemtemplate
> /asp:Repeater
> /itemtemplate
> /asp:Repeater
>
>
>
> Code Behind:
>
> private void BindWebsites()
> {
> level1Repeater.DataSource = Websites.GetAll();
> Page.DataBind();
> }
>
> public static DataTable GetAll()
> {
> .......
> ds.Relations.Add("L1L2", ds.Tables["WebsitesL1"].Columns["ID"],
> ds.Tables["WebsitesL2"].Columns["ParentID"]);
> ds.Relations.Add("L2L3", ds.Tables["WebsitesL2"].Columns["ID"],
> ds.Tables["WebsitesL3"].Columns["ParentID"]);
>
> return ds.Tables["WebsitesL1"];
> }
>
>
> --
> Eirik Eldorsen
>
> [/quote:a689f73dce]
Hello, I have been looking for a solution only with 2 repeaters. Could you please send me the full code if you still have it?

Many thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,989
Messages
2,570,207
Members
46,782
Latest member
ThomasGex

Latest Threads

Top