天天看點

GridView背景添加模闆列

1、定義實作ITemplate接口的類

public class GridViewTemplate : ITemplate //定義實作接口ITemplate的類
        {
            private DataControlRowType templateType;
            private string columnName;
            DataTable dt;

            /// <summary>
            /// 綁定checkbox列專用
            /// </summary>
            /// <param name="type"></param>
            /// <param name="colname"></param>
            /// <param name="dt1"></param>

            public GridViewTemplate(DataControlRowType type, string colname,DataTable dt1) //構造函數
            {
                templateType = type;
                columnName = colname;
                dt = dt1;
            }

            public void InstantiateIn(System.Web.UI.Control container) //分别建立頭行和下面行
            {
                switch (templateType)
                {
                    case DataControlRowType.Header: //頭行
                        Literal lc = new Literal();
                        lc.Text = columnName;
                        container.Controls.Add(lc);
                        break;


                    case DataControlRowType.DataRow: //一般行
                        CheckBox cb = new CheckBox();
                        cb.ID = "CheckHide";
                       
                        cb.DataBinding += new EventHandler(ib_DataBinding);//綁定資料調用方法ib_DataBinding(object sender, EventArgs e)
                        container.Controls.Add(cb);
                        break;
                    default:
                        break;
                }
            }
            void ib_DataBinding(object sender, EventArgs e)
            {

                CheckBox  lbl = sender as CheckBox;

                GridViewRow gr = lbl.NamingContainer as GridViewRow;

                lbl.Checked = Convert.ToBoolean((DataBinder.Eval(gr.DataItem, "hide")));
             
                // lbl. = DataBinder.Eval(gr.DataItem, _innerContorlName).ToString(); 

            }
        } 

 
           

2、添加模闆列

TemplateField a = new TemplateField();
           ITemplate d = new GridViewTemplate(DataControlRowType.Header, "判定", dt);
           ITemplate ds= new GridViewTemplate(DataControlRowType.DataRow, "判定", dt);
           a.ItemTemplate = d;
           a.ItemTemplate = ds;
           GridViewv.Columns.Add(a);
           

綜上:共兩個步驟。同理EditTemplate也是這樣定義