Asp.net动态添加GridView列

Asp.net动态添加GridView列,列中的控件可以任意指定一个或多个。

比使用一般的Table控件,更加的灵活,且能够很多的支持数据的绑定操作。

下面给出了一个示例。

1. 首先是指定动态要添加的列

2.绑定数据

3.获取GridView中的值。

代码如下:

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

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

猜你喜欢

转载自www.cnblogs.com/liyanyan665/p/11335180.html
今日推荐