所以我有一个gridview。 gridview中的一列具有所有行的下拉列表。是否可以在更改任何gridview下拉框选择时触发方法?
我尝试在项目模板中为下拉列表添加onselectedindexchange,但它不起作用。
有什么想法吗?
<Gridview>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList runat="server">
<asp:ListItem Value="Yes">Yes</asp:ListItem>
<asp:ListItem Value="No">No</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</GridView>
答案 0 :(得分:4)
您可以使用已更改的选定索引来假设这是您网格中的下拉列表
<Gridview>
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True"
onselectedindexchanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</GridView>
您可以使用以下功能
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
GridViewRow row = (GridViewRow)ddl.Parent.Parent;
int idx = row.RowIndex;
// TextBox txtECustCode = (TextBox)row.Cells[0].FindControl("txtECustCode");
答案 1 :(得分:1)
您必须使用GridView.RowCommand事件而不是On SelectedIndex Changed。同时添加AutoPostBack="true",如果需要,您可以使用CommandArguments
传递参数。
void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
DropDownList DropDownList1 = (DropDownList)row.FindControl("DropDownList1");
}