早上好
我想知道在这种情况下如何获取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>
Codebehind中的:
protected void lv1_ItemDataBound(object sender, ListViewItemEventArgs e) {
ListView lv2 = (ListView)e.Item.FindControl("lv2"); // Accessed
ListView lv3 = (ListView)e.Item.FindControl("lv3"); // Not Accessed (NULL)
}
我试图从父ListView访问嵌套的最后一个。请任何建议。 ??
答案 0 :(得分:1)
此外,我不相信你可以像这样嵌套ListView's
。
更像是这样:
<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()
来电
答案 1 :(得分:0)
这是一个猜测...因为我没有使用asp的经验,但你的控制应该可以从你的铸造lv2访问,因为lv3是&#34;内部&#34;它。我假设搜索只对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 http://msdn.microsoft.com/en-us/library/486wc64h%28v=vs.110%29.aspx
使用FindControl从代码隐藏中的函数访问控件 页面,访问位于另一个容器内的控件或在 目标控制不直接的其他情况 呼叫者可以访问。 此方法仅在找到控件时才会出现 控件直接由指定的容器包含;那就是 方法不会在整个控件层次结构中搜索 控制。有关如何在不执行控件时查找控件的信息 知道它的直接容器,请参见如何:访问服务器控件 ID。
答案 2 :(得分:0)
尝试使用lv2的ItemDataBound事件来获取lv3
protected void lv2_ItemDataBound(object sender, ListViewItemEventArgs e) {
ListView lv3 = (ListView)e.Item.FindControl("lv3");
}