动态创建 DataGrid 中的模板列






3.60/5 (17投票s)
2006年3月8日
1分钟阅读

122650

1614
本文介绍如何使用模板类动态创建具有绑定列的模板列。
引言
本文档介绍了如何动态创建模板列。我遇到了一种情况,需要从数据库显示一些列值,并动态显示一些模板(复选框)列。
我创建了一个示例模板类,该类在项目中是必需的。首先,根据您的需求修改模板类。这里我给出了一个复选框作为模板列的示例。
在您的项目中实现代码的步骤
1) 将 DataGrid 的 AutoGenerateColumns 属性设置为 false。
2) 绑定静态列的示例
<asp:DataGrid id="ItemsGrid" runat="server" OnItemCommand="Grid_CartCommand" AutoGenerateColumns="False"
CellPadding="3" BorderWidth="1px" BorderColor="Black">
<HeaderStyle BackColor="#C0C0FF"></HeaderStyle>
<Columns>
<asp:ButtonColumn Text="Add" ButtonType="PushButton" HeaderText="Add to cart" CommandName="AddToCart"></asp:ButtonColumn>
<asp:ButtonColumn Text="Remove" ButtonType="PushButton" HeaderText="Remove from cart" CommandName="RemoveFromCart"></asp:ButtonColumn>
<asp:BoundColumn DataField="StringValue" HeaderText="Item"></asp:BoundColumn>
<asp:BoundColumn DataField="CurrencyValue" HeaderText="Price" DataFormatString="{0:c}">
<ItemStyle HorizontalAlign="Right"></ItemStyle>
</asp:BoundColumn>
</Columns>
</asp:DataGrid>
3) 在 Page_load 中添加以下代码
if (!IsPostBack)
{
// 此数据仅加载一次。
ItemsGrid.DataSource= CreateDataSource(); // 函数用于创建动态列
ItemsGrid.DataBind();
}
4) 在 OnInit() 中添加以下代码 protected void OnInit(EventArgs e)// // CODEGEN: 此调用由 ASP.NET Web Form Designer 要求。 //
CreateDataGridColumn();
InitializeComponent();
}
base.OnInit(e);//-----------------------------------------------------------------------------
public
{
override
{
void CreateDataGridColumn()// 创建动态列并添加到 Columns 集合中。//-----------------------------------------------------------------------------TemplateColumn tc1 =
//-----使用的类名为 DataGridTempla.cs------
tc1.HeaderTemplate =
tc1.ItemTemplate =
tc1.EditItemTemplate =
tc1.FooterTemplate =
ItemsGrid.Columns.Add(tc1);
new TemplateColumn();new DataGridTempla(ListItemType.Header, "Select1");new DataGridTempla(ListItemType.Item, "Select1");new DataGridTempla(ListItemType.EditItem, "");new DataGridTempla(ListItemType.Footer, "");//-----------------------------------------------------------------------------TemplateColumn tc2=
tc2.HeaderTemplate=
tc2.ItemTemplate=
ItemsGrid.Columns.Add(tc2);
new TemplateColumn();new DataGridTempla(ListItemType.Header,"Select2");new DataGridTempla(ListItemType.Item,"Select2");//-----------------------------------------------------------------------------BoundColumn NumberColumn =
NumberColumn.HeaderText="Item Number";
NumberColumn.DataField="IntegerValue";
new BoundColumn();// 将列添加到 Columns 集合中。ItemsGrid.Columns.AddAt(2, NumberColumn);
}
//-----------------------------------------------------------------------------