首页 > 解决方案 > 父中继器项的 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
}

标签: c#asp.net

解决方案


你在正确的轨道上使用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;

推荐阅读