2017-12-29 8 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을 반환합니다. ,

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

당신이 RowDataBound 경우에 다른 코드를 가능성이 있기 때문에 : 당신은이에 대한 RowDataBound 이벤트를 사용할 수 있습니다

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

이 제조법을 시도해 볼 수 있습니다. https://blog.codinghorror.com/recursive-pagefindcontrol/ – hardkoded

답변

1

:

나는 또한이 같은 다른 변화를 시도 그러면 해당 이벤트에서 모든 코드를 중앙 집중화하고 중복 된 코드를 피할 수 있습니다.