c# - 父中继器项的 ASP.NET 索引(在嵌套中继器中)
问题描述
我有一个嵌套中继器,即一个父中继器和一个子中继器。子转发器仅包含一个 DropDownList 控件。我在 DropDownList 控件上有 OnSelectedIndexChanged 设置。当下拉列表的选择发生变化时,我可以获得子中继器项目的索引。
我的问题是:如何获取更改下拉列表选择的父中继器的索引。
这是示例代码:
<asp:Repeater runat="server" ID="ParentRepeater">
<ItemTemplate>
<asp:Repeater runat="server" ID="ChildRepeater">
<ItemTemplate>
<asp:DropDownList runat="server" ID="DropDownInChildRepeater" OnSelectedIndexChanged="DropDownInChildRepeater_OnSelectedIndexChanged" />
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
protected void DropDownInChildRepeater_OnSelectedIndexChanged(object sender, EventArgs e)
{
var dropDownInChildRepeater = (DropDownList)sender;
var dropDownInChildRepeaterItem = (RepeaterItem)dropDownInChildRepeater.NamingContainer;
var indexOfDropDownInChildRepaterItem = dropDownInChildRepeater.ItemIndex;
//Question I need index of ParentRepeater in which sender resides
}
解决方案
你在正确的轨道上使用NaminContainer
. 你只需要上控制树。DropDownList > RepeaterItem > 中继器 > RepeaterItem。
//dropdown in child repeater
var dropDownInChildRepeater = (DropDownList)sender;
//repeater item in child repeater
var dropDownInChildRepeaterItem = (RepeaterItem)dropDownInChildRepeater.NamingContainer;
//child repeater
var childRepeater = (Repeater)dropDownInChildRepeaterItem.NamingContainer;
//repeateritem of parent repeater
var parentRepeaterItem = (RepeaterItem)childRepeater.NamingContainer;
//the item index of the parent repeateritem
var parentRepeaterItemIndex = parentRepeaterItem.ItemIndex;
推荐阅读
- javascript - 记忆游戏元素创建代码不起作用
- c# - C# Linq GroupBy - 具有特定条件
- php - 解析错误:语法错误、意外的 '$v' (T_VARIABLE)、期望函数 (T_FUNCTION) 或 const (T_CONST)
- c# - 如何通过 DataReader 将选定字段中的值添加到 DataGridView
- ios - 有时无法加载激励视频广告
- c++ - QGeoCodingManager 没有给出错误但没有结果
- python-3.x - Selenium webdriver.Remote 在 Linux 上出现 SSL 错误,适用于 macOS
- javascript - 当我点击它时,视频无法在手机上播放
- uml - 通信图或系统序列图中的接口描述?
- linux - 找不到 libisl.so.15