您的位置:首页 > 其它

GridView后台添加模板列

2012-10-07 00:47 218 查看
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也是这样定义
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: