要在GridView中动态添加列,可以使用以下步骤:
在GridView控件中定义模板列。在代码中动态添加TemplateField并将其添加到GridView中。以下是一个示例代码:
// 创建一个新的TemplateFieldTemplateField templateField = new TemplateField();templateField.HeaderTemplate = new GridViewTemplate(ListItemType.Header, "New Column Header");templateField.ItemTemplate = new GridViewTemplate(ListItemType.Item, "ItemTemplate");templateField.EditItemTemplate = new GridViewTemplate(ListItemType.EditItem, "EditItemTemplate");// 将TemplateField添加到GridView中GridView1.Columns.Add(templateField);在上面的示例中,GridViewTemplate是自定义的一个类,用来定义列的模板。在GridViewTemplate类中,需要实现InstantiateIn方法来定义模板列的内容。
public class GridViewTemplate : ITemplate{ private ListItemType _type; private string _columnName; public GridViewTemplate(ListItemType type, string colname) { _type = type; _columnName = colname; } public void InstantiateIn(Control container) { switch (_type) { case ListItemType.Header: Literal headerLiteral = new Literal(); headerLiteral.Text = "<b>" + _columnName + "</b>"; container.Controls.Add(headerLiteral); break; case ListItemType.Item: Literal itemLiteral = new Literal(); itemLiteral.DataBinding += new EventHandler(itemLiteral_DataBinding); container.Controls.Add(itemLiteral); break; case ListItemType.EditItem: TextBox txtEdit = new TextBox(); txtEdit.ID = "txtEdit" + _columnName; container.Controls.Add(txtEdit); break; } } private void itemLiteral_DataBinding(object sender, EventArgs e) { Literal itemLiteral = (Literal)sender; GridViewRow container = (GridViewRow)itemLiteral.NamingContainer; itemLiteral.Text = DataBinder.Eval(container.DataItem, _columnName).ToString(); }}通过以上步骤,就可以在GridView中动态添加一个列,并定义其内容及样式。