本例用代码实现了创建DataGrid并响应了CheckBox事件,并实现了超链接列的多变量传送。
创建一个前台页面
CreateDataGrid.aspx:
在Form中添加一个PlcaeHolder,ID为"ph",Runat="Server"
后台页面
CreateDatagrid.aspx.cs
 public class CreateDataGrid : System.Web.UI.Page
     public class CreateDataGrid : System.Web.UI.Page {
    { public String sql = "Select FirstName,LastName,HomePhone,Title FROM Employees";
        public String sql = "Select FirstName,LastName,HomePhone,Title FROM Employees"; public DataGrid mygrid = new DataGrid();
        public DataGrid mygrid = new DataGrid(); protected System.Web.UI.WebControls.PlaceHolder ph;
        protected System.Web.UI.WebControls.PlaceHolder ph; public String SortExpression;
        public String SortExpression; private void Page_Load(object sender, System.EventArgs e)
        private void Page_Load(object sender, System.EventArgs e) {
        { //CreateDataGridForm.Controls.Add(MakeGrid());
              //CreateDataGridForm.Controls.Add(MakeGrid()); 
             this.ph.Controls.Add(MakeGrid());
            this.ph.Controls.Add(MakeGrid()); }
        } //        protected override void CreateChildControls()
//        protected override void CreateChildControls() //        {
//        { 
             //base.CreateChildControls ();
            //base.CreateChildControls (); //}
        //}
 #region Web 窗体设计器生成的代码
        #region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e)
        override protected void OnInit(EventArgs e) {
        { //
            // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 //
            // InitializeComponent();
            InitializeComponent(); base.OnInit(e);
            base.OnInit(e); }
        } 
         /// <summary>
        /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。
        /// 此方法的内容。 /// </summary>
        /// </summary> private void InitializeComponent()
        private void InitializeComponent() {
        {     this.Load += new System.EventHandler(this.Page_Load);
            this.Load += new System.EventHandler(this.Page_Load);
 }
        } #endregion
        #endregion /// <summary>
        /// <summary> /// 创建一个模板列和一个列模板
        /// 创建一个模板列和一个列模板 /// </summary>
        /// </summary>
 public TemplateColumn tm = new TemplateColumn();
        public TemplateColumn tm = new TemplateColumn(); public ColumnTemplate mycol = new ColumnTemplate();
        public ColumnTemplate mycol = new ColumnTemplate();
 //返回DataView
        //返回DataView public DataView CreateDataSource ()
        public DataView CreateDataSource () {
        { string strSql;
            string strSql; strSql = "Data Source=localhost;Initial Catalog=Northwind;User Id=sa;Password=sa;";
            strSql = "Data Source=localhost;Initial Catalog=Northwind;User Id=sa;Password=sa;"; SqlConnection conn = new SqlConnection(strSql);
            SqlConnection conn = new SqlConnection(strSql); SqlDataAdapter db_sqladaptor = new SqlDataAdapter(sql,conn);
            SqlDataAdapter db_sqladaptor = new SqlDataAdapter(sql,conn); DataSet ds = new DataSet();
            DataSet ds = new DataSet(); db_sqladaptor.Fill(ds,"Employees");
            db_sqladaptor.Fill(ds,"Employees"); DataView myView = ds.Tables["Employees"].DefaultView;
            DataView myView = ds.Tables["Employees"].DefaultView; //myView.Sort=SortExpression;
            //myView.Sort=SortExpression; //Response.Write(sql);
            //Response.Write(sql); return myView;
            return myView; }
        }
 /// <summary>
        /// <summary> /// 处理排序
        /// 处理排序 /// </summary>
        /// </summary> /// <param name="sender"></param>
        /// <param name="sender"></param> /// <param name="e"></param>
        /// <param name="e"></param> public void Sort_Grid(Object sender, DataGridSortCommandEventArgs e)
        public void Sort_Grid(Object sender, DataGridSortCommandEventArgs e) {
        { SortExpression = e.SortExpression.ToString();
            SortExpression = e.SortExpression.ToString(); Session["SortField"]=SortExpression.Trim();
            Session["SortField"]=SortExpression.Trim(); if(Session["Order"]==null) Session["Order"] = "ASC";
            if(Session["Order"]==null) Session["Order"] = "ASC"; Session["Order"] = (Session["Order"].ToString()=="DESC")?"ASC":"DESC";
            Session["Order"] = (Session["Order"].ToString()=="DESC")?"ASC":"DESC"; if(Session["SortField"]==null) Session["SortField"] = "FirstName";
            if(Session["SortField"]==null) Session["SortField"] = "FirstName"; sql += " ORDER BY "+Session["SortField"].ToString() + " " + Session["Order"].ToString();
            sql += " ORDER BY "+Session["SortField"].ToString() + " " + Session["Order"].ToString(); mygrid.DataSource = CreateDataSource();
            mygrid.DataSource = CreateDataSource(); mygrid.DataBind();
            mygrid.DataBind(); }
        } /// <summary>
        /// <summary> /// 创建和设置DataGrid属性,这里的属性设置为固定值,但也可以动态设置
        /// 创建和设置DataGrid属性,这里的属性设置为固定值,但也可以动态设置 /// </summary>
        /// </summary> /// <returns></returns>
        /// <returns></returns>
 public DataGrid MakeGrid()
        public DataGrid MakeGrid() {
        { mygrid.CellPadding=2;
            mygrid.CellPadding=2; mygrid.Attributes.Add("align","center");
            mygrid.Attributes.Add("align","center"); mygrid.CellSpacing=0;
            mygrid.CellSpacing=0; mygrid.Width=500;
            mygrid.Width=500; mygrid.BorderWidth=1;
            mygrid.BorderWidth=1; mygrid.BorderColor=ColorTranslator.FromHtml("Black");
            mygrid.BorderColor=ColorTranslator.FromHtml("Black"); mygrid.AutoGenerateColumns=false;
            mygrid.AutoGenerateColumns=false; mygrid.ForeColor=ColorTranslator.FromHtml("Black");
            mygrid.ForeColor=ColorTranslator.FromHtml("Black"); mygrid.Font.Size=9;
            mygrid.Font.Size=9; mygrid.Font.Name="宋体";
            mygrid.Font.Name="宋体"; mygrid.AllowSorting=true;
            mygrid.AllowSorting=true;
 ///sort命令的事件处理器
            ///sort命令的事件处理器
 //mygrid.SortCommand += new DataGridSortCommandEventHandler(Sort_Grid);
            //mygrid.SortCommand += new DataGridSortCommandEventHandler(Sort_Grid); mygrid.ItemDataBound +=new DataGridItemEventHandler(mygrid_ItemDataBound);
            mygrid.ItemDataBound +=new DataGridItemEventHandler(mygrid_ItemDataBound);
 ///设置headerstyle
            ///设置headerstyle mygrid.HeaderStyle.BackColor=ColorTranslator.FromHtml("Gold");
            mygrid.HeaderStyle.BackColor=ColorTranslator.FromHtml("Gold"); mygrid.HeaderStyle.ForeColor=ColorTranslator.FromHtml("Black");
            mygrid.HeaderStyle.ForeColor=ColorTranslator.FromHtml("Black"); mygrid.HeaderStyle.Font.Name="宋体";
            mygrid.HeaderStyle.Font.Name="宋体"; mygrid.HeaderStyle.Font.Size=9;
            mygrid.HeaderStyle.Font.Size=9; mygrid.HeaderStyle.Font.Bold=true;
            mygrid.HeaderStyle.Font.Bold=true; mygrid.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
            mygrid.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
 ///设置alternating style
            ///设置alternating style mygrid.AlternatingItemStyle.BackColor=ColorTranslator.FromHtml("Silver");
            mygrid.AlternatingItemStyle.BackColor=ColorTranslator.FromHtml("Silver"); mygrid.AlternatingItemStyle.ForeColor=ColorTranslator.FromHtml("Black");
            mygrid.AlternatingItemStyle.ForeColor=ColorTranslator.FromHtml("Black");
 ///设置itemstyle
            ///设置itemstyle mygrid.ItemStyle.HorizontalAlign=HorizontalAlign.Left;
            mygrid.ItemStyle.HorizontalAlign=HorizontalAlign.Left;
 ///创建绑定列和属性
            ///创建绑定列和属性
 HyperLinkColumn FirstName = new HyperLinkColumn();
            HyperLinkColumn FirstName = new HyperLinkColumn(); BoundColumn LastName = new BoundColumn();
            BoundColumn LastName = new BoundColumn(); BoundColumn HomePhone = new BoundColumn();
            BoundColumn HomePhone = new BoundColumn(); BoundColumn Title = new BoundColumn();
            BoundColumn Title = new BoundColumn();
 //            FirstName.HeaderText="名字";
//            FirstName.HeaderText="名字"; //            FirstName.DataField="FirstName";
//            FirstName.DataField="FirstName"; //            FirstName.SortExpression="FirstName";
//            FirstName.SortExpression="FirstName";
 FirstName.HeaderText="名字";
            FirstName.HeaderText="名字"; 
             FirstName.DataTextField ="FirstName";
            FirstName.DataTextField ="FirstName"; FirstName.SortExpression="FirstName";
            FirstName.SortExpression="FirstName"; FirstName.NavigateUrl = "http://localhost/test.aspx";
            FirstName.NavigateUrl = "http://localhost/test.aspx";
 LastName.HeaderText="姓";
            LastName.HeaderText="姓"; LastName.DataField="LastName";
            LastName.DataField="LastName"; LastName.SortExpression="LastName";
            LastName.SortExpression="LastName";
 HomePhone.HeaderText="电话";
            HomePhone.HeaderText="电话"; HomePhone.DataField="HomePhone";
            HomePhone.DataField="HomePhone"; HomePhone.SortExpression="HomePhone";
            HomePhone.SortExpression="HomePhone";
 Title.HeaderText="职务";
            Title.HeaderText="职务"; Title.DataField="Title";
            Title.DataField="Title"; Title.SortExpression="Title";
            Title.SortExpression="Title";
 mygrid.Columns.AddAt(0, FirstName);
            mygrid.Columns.AddAt(0, FirstName); mygrid.Columns.AddAt(1, LastName);
            mygrid.Columns.AddAt(1, LastName); mygrid.Columns.AddAt(2, HomePhone);
            mygrid.Columns.AddAt(2, HomePhone); mygrid.Columns.AddAt(3, Title);
            mygrid.Columns.AddAt(3, Title);
 ///设置模板列属性和ItemStyle模板
            ///设置模板列属性和ItemStyle模板 tm.HeaderText="**删除信息**";
            tm.HeaderText="**删除信息**"; tm.HeaderStyle.HorizontalAlign=HorizontalAlign.Center;
            tm.HeaderStyle.HorizontalAlign=HorizontalAlign.Center; tm.ItemStyle.BackColor = ColorTranslator.FromHtml("#FFF778");
            tm.ItemStyle.BackColor = ColorTranslator.FromHtml("#FFF778"); tm.ItemStyle.HorizontalAlign=HorizontalAlign.Center;
            tm.ItemStyle.HorizontalAlign=HorizontalAlign.Center; 
            
 TemplateColumn aa=new TemplateColumn();
            TemplateColumn aa=new TemplateColumn(); ColumnTemplate1 tt = new ColumnTemplate1();
            ColumnTemplate1 tt = new ColumnTemplate1(); aa.ItemTemplate = tt;
            aa.ItemTemplate = tt;
 
             ///创建列模板。
            ///创建列模板。 ///列模板从ITemplate继承
            ///列模板从ITemplate继承 tm.ItemTemplate = mycol;
            tm.ItemTemplate = mycol; mygrid.Columns.AddAt(4, tm);
            mygrid.Columns.AddAt(4, tm); mygrid.Columns.AddAt(5,aa);
            mygrid.Columns.AddAt(5,aa);  
 ///绑定和返回
            ///绑定和返回 mygrid.DataSource = CreateDataSource();
            mygrid.DataSource = CreateDataSource(); mygrid.DataBind();
            mygrid.DataBind(); return mygrid;
            return mygrid; }
        }
 private void mygrid_ItemDataBound(object sender, DataGridItemEventArgs e)
        private void mygrid_ItemDataBound(object sender, DataGridItemEventArgs e) {
        { if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
            { HyperLink link  = (HyperLink)e.Item.Cells[0].Controls[0];
                HyperLink link  = (HyperLink)e.Item.Cells[0].Controls[0];   string url = link.NavigateUrl;
                string url = link.NavigateUrl; //实现多参数链接
    //实现多参数链接 url += "?id=" + e.Item.Cells[1].Text + "&id2=" + e.Item.Cells[2].Text;
                url += "?id=" + e.Item.Cells[1].Text + "&id2=" + e.Item.Cells[2].Text; link.NavigateUrl = url;
                link.NavigateUrl = url; }
            } }
        } }
    } 
  
 
再添加关键的几段
 ///  ColumnTemplate 从ITemplate继承。
 ///  ColumnTemplate 从ITemplate继承。 ///  "InstantiateIn"定义子控件的属于谁
    ///  "InstantiateIn"定义子控件的属于谁
 public class ColumnTemplate : ITemplate
    public class ColumnTemplate : ITemplate {
    {
 public void InstantiateIn(Control container)
        public void InstantiateIn(Control container) {
        { Label myLabel = new Label();
            Label myLabel = new Label(); myLabel.Text="点击删除";
            myLabel.Text="点击删除"; CheckBox mycheckbox = new CheckBox();
            CheckBox mycheckbox = new CheckBox(); container.Controls.Add(myLabel);
            container.Controls.Add(myLabel); container.Controls.Add(mycheckbox);
            container.Controls.Add(mycheckbox); }
        }
 }
    } 
添加CheckBox事件:
 public class ColumnTemplate1 : ITemplate
public class ColumnTemplate1 : ITemplate {
    {
 public void InstantiateIn(Control container)
        public void InstantiateIn(Control container) {
        { Label myLabel = new Label();
            Label myLabel = new Label(); myLabel.Text="test";
            myLabel.Text="test"; CheckBox lnk = new CheckBox();
            CheckBox lnk = new CheckBox(); lnk.AutoPostBack = true;
            lnk.AutoPostBack = true; lnk.CheckedChanged +=new EventHandler(lnk_CheckedChanged);
            lnk.CheckedChanged +=new EventHandler(lnk_CheckedChanged); container.Controls.Add(myLabel);
            container.Controls.Add(myLabel); container.Controls.Add(lnk);
            container.Controls.Add(lnk); }
        }

 private void lnk_CheckedChanged(object sender, EventArgs e)
        private void lnk_CheckedChanged(object sender, EventArgs e) {
        { CheckBox lnk = (CheckBox)sender;
            CheckBox lnk = (CheckBox)sender; DataGrid dg = (DataGrid)lnk.NamingContainer.NamingContainer;
            DataGrid dg = (DataGrid)lnk.NamingContainer.NamingContainer; if(dg == null) return;
            if(dg == null) return; //实现CheckBox事件响应
             //实现CheckBox事件响应 DataGridItem di =(DataGridItem)lnk.NamingContainer;
            DataGridItem di =(DataGridItem)lnk.NamingContainer; HyperLink lnkID= (HyperLink)di.Cells[0].Controls[0];
            HyperLink lnkID= (HyperLink)di.Cells[0].Controls[0]; string s2 =  lnkID.Text.Trim()+lnk.ID+"被选中了!";
            string s2 =  lnkID.Text.Trim()+lnk.ID+"被选中了!"; }
        } }
    }