在gridview中下拉,在SelectedIndexChanged上找到Grid Row

时间:2012-10-24 10:12:20

标签: asp.net datagridview

我有一个asp.net gridview。类型下拉列表的模板字段包含在列中:

<asp:TemplateField HeaderTextLabel="strManagedOETeamart">
                        <ItemTemplate>
                            <asp:DropDownList runat="server" AutoPostBack="True" OnSelectedIndexChanged="SelectedTeamartChanged">
                                <asp:ListItem Selected="True" Value="White"> White </asp:ListItem>
                                <asp:ListItem Value="Silver"> Silver </asp:ListItem>
                                <asp:ListItem Value="DarkGray"> Dark Gray </asp:ListItem>
                                <asp:ListItem Value="Khaki"> Khaki </asp:ListItem>
                                <asp:ListItem Value="DarkKhaki"> Dark Khaki </asp:ListItem>
                            </asp:DropDownList>
                        </ItemTemplate>
                    </asp:TemplateField>

当用户选择其他项目时,如何获取GridViewRow?

    protected void SelectedTeamartChanged(object sender, EventArgs e)
    {
        DropDownList dropDown = (DropDownList) sender;
        //I would like to know the GridViewRow this DropDownList is in

    }

1 个答案:

答案 0 :(得分:1)

您正在寻找NamingContainer属性:

GridViewItem row = (GridViewRow)dropDown.NamingContainer;

顺便说一句,这适用于任何类型的网络数据绑定控件,例如GridViewDataListRepeaterListView

考虑这个更复杂的要求:您有GridView嵌套在另一个GridView中。现在,您正在处理子项SelectedIndexChanged内的DropDownList的GridView事件,并且您希望获得对父GridViewRow的{​​{1}}的引用:

GridView

这是获得它的最安全,最简单的方法。