找了很多资料,对动态模板列的创建有一定的了解,集合了下网上的一些精华。
继承ITemplate类,动态创建textbox,checkbox,dropdownlist等,并动态绑定数据
public class GridViewItemTemplate:ITemplate
{
private string obj; //控件对象的字符串,以此来判断具体创建哪个控件
private DataControlRowType templateType; //当前行的模板 (Header,item)
private string colName; //控件要显示的字符,或是绑定数据源的字段列名
public GridViewItemTemplate(DataControlRowType rtype, string controlStr, string colN)
{
templateType = rtype;
colName = colN;
obj = controlStr;
}
public GridViewItemTemplate(DataControlRowType rtype, string colN)
{
templateType = rtype;
colName = colN;
obj = "TextBox";
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal headlt = new Literal();
headlt.Text = colName;
container.Controls.Add(headlt);
break;
case DataControlRowType.DataRow:
switch (obj.ToLower())
{
case "htmlcheckbox":
HtmlInputCheckBox cbkeys = new HtmlInputCheckBox();
cbkeys.ID = "cb_keys";
cbkeys.DataBinding += new EventHandler(this.CheckBoxDataBinding);
container.Controls.Add(cbkeys);
break;
case "dropdownlist":
DropDownList drr = new DropDownList();
drr.ID = "dropdown";