Asp.net动态添加GridView列
2016-04-10 11:23
357 查看
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();
}
}
//获取内容
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;
}
}
比使用一般的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();
}
}
//获取内容
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;
}
}
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- RPC failed; result=22, HTTP code = 411
- c#调用COM组件
- gosyd/go1.6.slide at master · davecheney/gosyd · GitHub
- 星外ASP.Net的安全设置相关说明
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解
- C#.NET获取拨号连接的宽带连接方法