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也是这样定义