Asp.net GridView dynamically add columns

Asp.net GridView dynamically adding columns, the column control can arbitrarily specify one or more.

Table control than normal, more flexible, and can bind operation a lot of support data.

An example is given below.

1. The first is to be added dynamically specify the column

2. Binding Data

3. Get the value of the GridView.

code show as below:

using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Other_TestGridView : System.Web.UI.Page
{
public class GenericItem : ITemplate
{

private string column;

public GenericItem(string column)
{

this.column = column;

}

public void InstantiateIn(Control container)
{

//TextBox txt = new TextBox();

//txt.Width = Unit.Pixel(15);

//txt.DataBinding += new EventHandler(this.BindData);
DropDownList ddl = new DropDownList();
ddl.DataBinding += new EventHandler(this.BindData);

container.Controls.Add(ddl);

HiddenField HF = new HiddenField();
HF.Value = column;

container.Controls.Add(HF);

}

public void BindData(object sender, EventArgs e)
{

//TextBox txt = (TextBox)sender;
//txt.Text = "▲";
DropDownList ddl = (DropDownList)sender;
ddl.Items.Add(new ListItem("○"));
ddl.Items.Add(new ListItem("▲"));
ddl.Items.Add(new ListItem("●"));


}

}
protected void GridView1_Init(object sender, EventArgs e)
{
addGridColumns();
}

private void addGridColumns()
{
for(int i = 0; i < 10; i++)
{
TemplateField templateField = new TemplateField();
templateField.HeaderText = "标题人名"+i.ToString();
templateField.ItemTemplate = new GenericItem((10+ i).ToString());
GridView1.Columns.Add(templateField);
}

}

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.Add("work", typeof(string));
dt.Rows.Add(new object[] { "工作描述1" });
dt.Rows.Add(new object[] { "工作描述2" });
dt.Rows.Add(new object[] { "工作描述3" });
GridView1.DataSource = dt;
GridView1.DataBind(http://www.amjmh.com);
}
}
//获取内容
protected void Button1_Click(object sender, EventArgs e)
{
string content = "";
foreach(GridViewRow row in GridView1.Rows)
{
content += row.Cells[0].Text;
for(int i = 1; i < row.Cells.Count; i++)
{
// content += ((TextBox)(row.Cells[i].Controls[0])).Text;
content += ((DropDownList)(row.Cells[i].Controls[0])).SelectedItem.Text;
}
content += "<br>";
}
// MyClientScript.ygJScript.Alert(content, this);
Label1.Text = content;
}
}

---------------------

Guess you like

Origin www.cnblogs.com/liyanyan665/p/11335180.html