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也是這樣定義