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"];
}
 

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

Top