我的asp.net页面上有三个嵌套的ListView控件,每个控件都嵌套在另一个页面中。我使用第一个ListView中的OnItemDataBound事件来设置第二级ListView的DataSource。第三个ListView包含在第二个ListView中。我想将相同的DataSource分配给第二级和第三级ListView数据源控件,但我无法弄清楚如何访问第三级ListView以便这样做。
以下是一些帮助可视化的示例代码:
<asp:ListView id="level1" runat="server" OnItemDataBound="level1_ItemDataBound">
<layouttemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder>
</layouttemplate>
<itemtemplate>
<asp:ListView id="level2" runat="server">
<layouttemplate>
<asp:ListView id="level3" runat="server">
<layouttemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder>
</layouttemplate>
<itemtemplate>OUTPUT DATA FOR LEVEL 3</itemtemplate>
</asp:ListView>
</layouttemplate>
<itemtemplate>OUTPUT DATA FOR LEVEL 2</itemtemplate>
</asp:ListView>
OUTPUT DATA FOR LEVEL 1
</itemtemplate>
</asp:ListView>
level1_ItemDataBound 方法找到level2控件,将其强制转换为ListView,设置其DataSource并执行DataBind。在这一点上,我试图将Level3.DataSource设置为与Level2.DataSource相同。有什么帮助吗?
答案 0 :(得分:2)
在level2 listview上调用DataBind之前,你应该在level2的ItemDataBound事件上注册一个事件处理程序。
一些伪代码:
protected void level1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
var listView2 = (ListView) e.Item.FindControl("level2");
listView2.ItemDataBound += level2_ItemDataBound;
listView2.DataSource = myDataSource;
listView2.DataBind();
}
protected void level2_ItemDataBound(object sender, ListViewItemEventArgs e)
{
var listView3 = (ListView) e.Item.FindControl("level3");
listView3.DataSource = myDataSource;
listView3.DataBind();
}