2017-12-29 16 views
1

Gridviewのedititemtemplateセクションでこのコントロールを探しています。ここでGridviewのedittemplateでコンボボックスコントロールを見つけようとしています

<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> 

私はedititemテンプレートにあるコントロールを取得しようとするイベントハンドラです。

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; 
} 

誰かが見つけようとしても、nullを返します。

私はまた、このような他のバリエーションを試してみました:

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

このレシピを試すことができます。https://blog.codinghorror.com/recursive-pagefindcontrol/ – hardkoded

答えて

1

あなたはこのためにRowDataBoundイベントを使用することができます。あなたがRowDataBoundイベント内の他のコードを持っている可能性があるので

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"); 
     } 
    } 
} 

、そのイベントにすべてのコードを集中させ、重複したコードを避けることができます。

関連する問題