在 DataGrid 控件中以编程方式创建模板,并在代码中对模板中控件进行动态绑定数据
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
TemplateColumn tc1 = new TemplateColumn();
tc1.ItemTemplate = new DataGridTemplate(ListItemType.Item,"sunyonglin","1");
tc1.HeaderTemplate = new DataGridTemplate(ListItemType.Header, "姓名","1");
DataGrid1.Columns.Add(tc1);
TemplateColumn tc2=new TemplateColumn();
tc2.ItemTemplate=new DataGridTemplate(ListItemType.Item,"性别","5");
tc2.HeaderTemplate=new DataGridTemplate(ListItemType.Header,"性别","5");
DataGrid1.Columns.Add(tc2);
TemplateColumn tc3=new TemplateColumn();
tc3.ItemTemplate=new DataGridTemplate(ListItemType.Item,"国家","2");
tc3.HeaderTemplate=new DataGridTemplate(ListItemType.Header,"国家","2");
DataGrid1.Columns.Add(tc3);
ButtonColumn bc=new ButtonColumn();
bc.Text="删除";
bc.ButtonType=ButtonColumnType.PushButton;
bc.CommandName="Delete";
DataGrid1.Columns.Add(bc);
ButtonColumn bc1=new ButtonColumn();
bc1.Text="添加";
bc1.ButtonType=ButtonColumnType.PushButton;
DataGrid1.Columns.Add(bc1);
EditCommandColumn EC=new EditCommandColumn();
EC.EditText="编辑";
EC.CancelText="取消";
EC.UpdateText="修改";
EC.HeaderText="操纵";
EC.ButtonType=ButtonColumnType.PushButton;
DataGrid1.Columns.Add(EC);
BoundColumn BC=new BoundColumn();
BC.HeaderText="序号";
BC.DataField="ID";
DataGrid1.Columns.Add(BC);
}
public class DataGridTemplate : ITemplate
{
ListItemType templateType;
string columnName;
string expressionType;
public DataGridTemplate(ListItemType type, string colname,string expression)
{
templateType = type;
columnName = colname;
expressionType=expression;
}
public void InstantiateIn(System.Web.UI.Control container)
{
Literal lc = new Literal();
switch(templateType)
{
case ListItemType.Header:
lc.Text = "<B>" + columnName + "</B>";
container.Controls.Add(lc);
break;
case ListItemType.Item:
//lc.Text = columnName;
//container.Controls.Add(lc);
//container.Controls.Add(OB);
if(expressionType=="1")
{
TextBox tb1 = new TextBox();
//tb1.Text = DataBinder.Eval(container.Parent.DataItem, "ID");
// 此处进行对模板中控件进行动态绑定数据不成功
//tb1.Text=(string)(DataBinder.Eval(container,"DataItem.ID"));
container.Controls.Add(tb1);
//DataGrid1.Controls.Add(tb1);
break;
}
else if(expressionType=="2")
{
DropDownList tb1=new DropDownList();
ListItem li=new ListItem();
li.Text="China";
li.Value="CCC";
tb1.Items.Add(li);
container.Controls.Add(tb1);
break;
}
else if(expressionType=="3")
{
ListBox tb1=new ListBox();
container.Controls.Add(tb1);
break;
}
else if(expressionType=="4")
{
RadioButton tb1=new RadioButton();
container.Controls.Add(tb1);
break;
}
else if(expressionType=="5")
{
CheckBox tb1=new CheckBox();
container.Controls.Add(tb1);
break;
}
else
{
TextBox tb1=new TextBox();
tb1.Text="";
container.Controls.Add(tb1);
break;
}
case ListItemType.EditItem:
TextBox tb = new TextBox();
tb.Text = "";
container.Controls.Add(tb);
break;
case ListItemType.Footer:
lc.Text = "<I>" + columnName + "</I>";
container.Controls.Add(lc);
break;
}
container.DataBind();
}
}
}
}