C# 如何访问第三个嵌套的ListView属性

C# 如何访问第三个嵌套的ListView属性,c#,asp.net,C#,Asp.net,早上好 我想知道在这种情况下如何获取ListView控件: <asp:ListView ID="lv1" runat="server" OnItemDataBound="lv1_ItemDataBound"> <asp:ListView ID="lv2" runat="server"> <asp:ListView ID="lv3" runat="server"> </asp:ListView>

早上好

我想知道在这种情况下如何获取ListView控件:

<asp:ListView ID="lv1" runat="server" OnItemDataBound="lv1_ItemDataBound">
     <asp:ListView ID="lv2" runat="server">
           <asp:ListView ID="lv3" runat="server">

           </asp:ListView>
     </asp:ListView>
</asp:ListView>

我正在尝试从父ListView访问嵌套的最后一个。有什么建议吗

这是一个猜测。。。因为我没有asp方面的经验,但是你的控件应该可以从你铸造的lv2中访问,因为lv3在里面。我假设搜索只对
ListViewItemEventArgs

protected void lv1_ItemDataBound(object sender, ListViewItemEventArgs e) {
    ListView lv2 = (ListView)e.Item.FindControl("lv2");  // Accessed
    ListView lv3 = (ListView)lv2.Item.FindControl("lv3");  // try it?
}
编辑 MSDN

使用FindControl从代码隐藏中的函数访问控件 页,以访问另一个容器中的控件,或 其他不直接控制目标的情况 呼叫方可以访问仅当 控件直接包含在指定的容器中;就是 方法不会在控件的整个层次结构中搜索 控制。获取有关在不使用控件时如何查找控件的信息 了解其直接容器,请参见如何:通过访问服务器控件 身份证


而且,我不相信你能像那样嵌套
ListView的

更像这样:

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
        <asp:ListView ID="ListView2" runat="server">
            <ItemTemplate>
                <asp:ListView ID="ListView3" runat="server"></asp:ListView>
        </ItemTemplate>
        </asp:ListView>
    </ItemTemplate>
</asp:ListView>


但是,是的,您可以按照Josh W所说的做,并使用一系列
.FindControl()
调用尝试使用lv2的ItemDataBound事件来获取lv3

protected void lv2_ItemDataBound(object sender, ListViewItemEventArgs e) {
    ListView lv3 = (ListView)e.Item.FindControl("lv3");
}

如何使用series FindControl?我试过了,但是没有得到lvListView是一个数据绑定控件。如果ListView与GridView类似,那么为了呈现和搜索ListView,它必须有一个数据源,并且该数据源必须返回数据,并且ListView的每一级都必须使用其父项中的键字段。所以这取决于你想做什么。在您的示例中,您试图在ItemDatabound事件中执行某些操作,但是所有Listview都有自己的ItemDatabound事件,因此您可能不需要搜索3个级别。您确定解决了正确的问题吗?您是对的,我必须通过设置OnItemDataBound属性将每个嵌套的对象绑定到正确的位置。。谢谢大家的帮助
protected void lv2_ItemDataBound(object sender, ListViewItemEventArgs e) {
    ListView lv3 = (ListView)e.Item.FindControl("lv3");
}