2014-01-31 115 views
1

所以我有一个gridview。 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> 

回答

3

您可以使用改为想这选择的指数是网格内的下拉

<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"); 
+0

也感谢Adil。当我最初放弃它时,我只是错过了autopostback。 – Safinn

+0

@Safinn欢迎您。 –

1

您必须使用GridView.RowCommand事件而不是On SelectedIndex已更改。如果需要,还可以添加AutoPostBack="true",您可以使用CommandArguments来传递参数。

void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e) 
{ 
     DropDownList DropDownList1 = (DropDownList)row.FindControl("DropDownList1"); 
} 
+0

啊确定。 rowCommand进入下拉列表或gridview吗?我会放弃它。 – Safinn

+0

我无法将CommandName添加到下拉列表中。其他一切都很好。 – Safinn