asp自定义GridView的 Columns在aspx.cs文件
时间: 2023-12-10 18:38:14 浏览: 111
自定义GridView
在 ASP.NET 中,GridView 控件的列可以在 aspx 页面中定义,也可以在 aspx.cs 文件中动态添加。如果您想在 aspx.cs 文件中添加 GridView 的列,可以通过以下代码实现:
```csharp
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// 创建 GridView 的模板列
TemplateField tf = new TemplateField();
tf.HeaderText = "自定义列";
tf.ItemTemplate = new GridViewTemplate(ListItemType.Item, "自定义列名称");
// 将列添加到 GridView 中
GridView1.Columns.Add(tf);
}
}
// 自定义 GridView 模板列的实现
public class GridViewTemplate : ITemplate
{
private ListItemType _templateType;
private string _columnName;
public GridViewTemplate(ListItemType type, string columnName)
{
_templateType = type;
_columnName = columnName;
}
public void InstantiateIn(Control container)
{
switch (_templateType)
{
case ListItemType.Item:
// 在 ItemTemplate 中添加控件
Label lbl = new Label();
lbl.ID = "lbl" + _columnName;
container.Controls.Add(lbl);
break;
case ListItemType.EditItem:
// 在 EditItemTemplate 中添加控件
TextBox txt = new TextBox();
txt.ID = "txt" + _columnName;
container.Controls.Add(txt);
break;
case ListItemType.Header:
// 在 HeaderTemplate 中添加控件
Label headerLbl = new Label();
headerLbl.Text = _columnName;
container.Controls.Add(headerLbl);
break;
}
}
}
```
在上述代码中,我们首先在 Page_Load 事件中创建了一个 TemplateField 对象,然后设置了该列的 HeaderText 和 ItemTemplate。这里的 ItemTemplate 是通过一个自定义的 GridViewTemplate 类实现的,该类实现了 ITemplate 接口,根据 ListItemType 的不同来实现不同的模板。最后,我们将创建的列添加到 GridView 控件的 Columns 集合中即可。
阅读全文