2017-12-29 10 views
1

Ich versuche, dieses Steuerelement in der Gridview EdititemTemplate Abschnitt zu finden.Kann ein Combobox-Steuerelement in EditTemplate in Gridview nicht finden

<EditItemTemplate> 
        <ajaxToolkit:ComboBox ID="GridviewCategoryComboBox1" AppendDataBoundItems="true" runat="server" AutoCompleteMode="Suggest" DataSourceID="GridViewCategorySqlDataSource1" DataTextField="Name" DataValueField="Id" MaxLength="0" Style="display: inline;"> 
     <asp:ListItem>Select Category</asp:ListItem> 
    </ajaxToolkit:ComboBox> 

Hier ist der Event-Handler, wo ich versuche, die Kontrolle zu holen, die in der edititem Vorlage ist.

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs 

e) 
     { 
      GridView1.EditIndex = e.NewEditIndex; 
      int id = (int)GridView1.DataKeys[e.NewEditIndex].Value; 

      ComboBox ddl = GridView1.Rows[e.NewEditIndex].Cells[1].FindControl("GridviewCategoryComboBox1") as ComboBox; 
} 

Es gibt null zurück, egal wer ich versuche, es zu finden.

Ich habe versucht, auch andere Varianten wie folgt aus:

ComboBox ddl = GridView1.Rows[e.NewEditIndex].FindControl("GridviewCategoryComboBox1") as ComboBox; 
+0

Sie könnten dieses Rezept versuchen https://blog.codinghorror.com/recursive-pagefindcontrol/ – hardkoded

Antwort

1

Sie können die RowDataBound Ereignis für diesen Einsatz:

protected void GridView1_RowDataBound(object sender, GridViewEditEventArgs e) { 
    if (e.Row.RowType == DataControlRowType.DataRow) { 
     if ((e.Row.RowState & DataControlRowState.Edit) > 0) { 
      ComboBox ddl = (ComboBox)e.Row.FindControl("GridviewCategoryComboBox1"); 
     } 
    } 
} 

Da es wahrscheinlich ist, dass Sie einen anderen Code in der RowDataBound Veranstaltung haben, Dann können Sie Ihren gesamten Code in diesem Ereignis zentralisieren und doppelten Code vermeiden.

Verwandte Themen