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;
    }
}
--------------------- 
                    
                
                
            
        
浙公网安备 33010602011771号