Add Columns dynamically to Grid-view with itemtemplate

▼魔方 西西 提交于 2019-11-28 08:46:12

问题


i want to know how to add column dynmically to gridview. the grid view suppose to get user input. i know how to use itemtemplate for specific no of columns, but i'm not aware how to add columns dynamically with itemtemplate (textbox) fields and make databind.


回答1:


You need to create a class implementing ITemplate , Full code as following:

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 page

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

    </Columns>
</asp:GridView>

You can manipulate DynamicTemplateField class to add different types of control



来源:https://stackoverflow.com/questions/23592785/add-columns-dynamically-to-grid-view-with-itemtemplate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!