C# 如何获取已知ListViewDataItem的ListView
我的.aspx页面上有很多列表视图。在每个ListView的ItemTemplate中都有一个复选框,onCheckedChanged会调用一个方法。对于其各自列表视图中的所有复选框,该方法是相同的 在方法内部,我有一段代码,用于获取触发事件的CheckBox对象和包含CheckBox对象的ListViewDataItem:C# 如何获取已知ListViewDataItem的ListView,c#,asp.net,listview,find,C#,Asp.net,Listview,Find,我的.aspx页面上有很多列表视图。在每个ListView的ItemTemplate中都有一个复选框,onCheckedChanged会调用一个方法。对于其各自列表视图中的所有复选框,该方法是相同的 在方法内部,我有一段代码,用于获取触发事件的CheckBox对象和包含CheckBox对象的ListViewDataItem: // Gets the CheckBox object that fired the event. CheckBox chkBox = (CheckBox)sender;
// Gets the CheckBox object that fired the event.
CheckBox chkBox = (CheckBox)sender;
// Gets the item that contains the CheckBox object.
ListViewDataItem item = (ListViewDataItem)chkBox.Parent.Parent;
现在,我想进一步获取ListViewDataItem的“父”ListView。但是像这样的事情:
ListView myListView = (ListView)item.Parent.Parent........;
不工作,可能是因为ListView与ListViewDataItem位于不同的继承层次结构中
如何获取ListView
非常感谢您的帮助
非常感谢。
致意
尼克兹德
ListView myListView = (ListView)item.NamingContainer;
编辑
<ItemTemplate>
<asp:Panel ID="pnSomeParent" runat="server">
<asp:CheckBox ......
</asp:Panel>
</ItemTemplate>
我也会把它用在这个项目上
ListViewDataItem item = (ListViewDataItem)chkBox.NamingContainer;
您避免使用Parent.Parent.Parent
<ItemTemplate>
<asp:Panel ID="pnSomeParent" runat="server">
<asp:CheckBox ......
</asp:Panel>
</ItemTemplate>
如果你问我,使用parent.parent.parent听起来像是一种代码气味。
是否可以为复选框指定一个值,用于标识listview?谢谢您的回答。你对复选框的想法听起来不错。我可以通过将复选框名称强制转换为字符串来命名复选框,从而从中获取ListView名称。但是接下来我将如何将字符串转换为ListView类型?我需要ListView的名称,以便在ListView上进行其他操作。非常感谢nickzdeSorry,因为它没有那么干净,但是您可以执行this.FindControl并传递ListView的名称,然后您应该能够强制转换它
我不确定您想用listview做什么,但这可能会帮助您。谢谢,这正是我最终做到的。我把你的答复记为答复。顺致敬意,尼克兹德