溫馨提示×

gridview動態添加列的方法

小樊
189
2024-06-30 01:22:44
欄目: 編程語言

要在GridView中動態添加列,可以使用以下步驟:

  1. 在GridView控件中定義模板列。
  2. 在代碼中動態添加TemplateField并將其添加到GridView中。

以下是一個示例代碼:

// 創建一個新的TemplateField
TemplateField 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中動態添加一個列,并定義其內容及樣式。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女