2014-05-11 4 views
3

열을 동적으로 gridview에 추가하는 방법을 알고 싶습니다. 그리드보기는 사용자 입력을 얻는다고 가정합니다. 특정 열에 대해 itemtemplate를 사용하는 방법을 알고 있지만 itemtemplate (textbox) 필드와 함께 동적으로 열을 추가하고 databind를 만드는 방법을 알지 못합니다.itemtemplate이있는 Grid-view에 동적으로 열 추가

답변

5

당신은, 전체 코드를 다음과 같이 ITemplate를 구현하는 클래스를 만들어야합니다

public class DynamicTemplateField : ITemplate 
{ 

    public void InstantiateIn(Control container) 
    { 
     //define the control to be added , i take text box as your need 
     TextBox txt1 = new TextBox(); 
     txt1.ID = "txt1"; 
     container.Controls.Add(txt1); 
    } 
} 

//Method to bind the Grid View 
public void BindData() 
{ 
    TemplateField temp1 = new TemplateField(); //Create instance of Template field 
    temp1.HeaderText = "New Dynamic Temp Field"; //Give the header text 

    temp1.ItemTemplate = new DynamicTemplateField(); //Set the properties **ItemTemplate** as the instance of DynamicTemplateField class. 


    gv.Columns.Add(temp1); //add the instance if template field in columns of grid view 

    //Bind the grid view 
    gv.DataSource = [your data source]; 
    gv.DataBind(); 

} 

이 RowDataBound

protected void gv_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     TextBox txt1 = e.Row.FindControl("txt1") as TextBox; 
     txt1.Text = e.Row.DataItem["Name"]; //Assign any column value of your datasource 
    } 

} 

.aspx 페이지

<asp:GridView ID = "gv" runat = "server" > 
    <Columns> 

    </Columns> 
</asp:GridView> 

DynamicTemplateField 클래스를 사용하여 다른 유형의 컨트롤을 추가 할 수 있습니다.

+0

동적 열이 잘 추가되었습니다. 하지만이 방법으로 각 itemtemplate에 대한 바인딩을 만들고 새 행을 추가하는 방법은 무엇입니까? –

+0

RowDataBound 이벤트를 사용하여 동적 추가 컨트롤에 값을 할당합니다. 게시 된 답변은 이에 따라 편집됩니다. –