我有一个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
}
答案 0 :(得分:1)
您正在寻找NamingContainer
属性:
GridViewItem row = (GridViewRow)dropDown.NamingContainer;
顺便说一句,这适用于任何类型的网络数据绑定控件,例如GridView
,DataList
,Repeater
或ListView
。
考虑这个更复杂的要求:您有GridView
嵌套在另一个GridView
中。现在,您正在处理子项SelectedIndexChanged
内的DropDownList的GridView
事件,并且您希望获得对父GridViewRow
的{{1}}的引用:
GridView
这是获得它的最安全,最简单的方法。