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();
        }        
    }
    //獲取內容
    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;
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章