如何将新数据表绑定到已具有旧数据表的gridview

时间:2014-03-12 16:57:58

标签: c# asp.net gridview datatable

我有一个gridview,它在运行时绑定到数据表。根据用户选择,数据表的列可以更改,然后我需要将数据表绑定到同一网格视图。如果用户这样做,系统崩溃,因为gridview查找相同的列名称。

如何清理所有gridview并反复绑定新数据?

这是我绑定数据的方式。每次列名都在改变

DataTable result = dt_to_result_bolge_kiyaslama(dt);
gv_kiyaslama.DataSource = result;
gv_kiyaslama.DataBind();

1 个答案:

答案 0 :(得分:1)

您可能正在寻找如何在运行时重新生成Grid View列。此CodeProject.com文章可能是故障单:How to create columns dynamically in a grid view

一些示例ASP代码:

<asp:GridView ID="MyGrid" runat="server" AutoGenerateColumns="false">
    <Columns />
</asp:GridView>

示例C#方法:

public void RegenerateColumns(GridView grid, DataTable data, IDictionary<string, string> columnText)
{
    grid.Columns.Clear();

    foreach (DataColumn col in data.Columns)
    {
        grid.Columns.Add(new BoundField()
        {
            DataField = col.ColumnName,
            HeaderText = columnText.ContainsKey(col.ColumnName)
                ? columnText[col.ColumnName]
                : col.ColumnName
        });
    }
}

现在使用:

DataTable table = new DataTable();
table.Columns.Add(...); // add "NAME" column
table.Columns.Add(...); // add "DESCRIPTION" column

// Create mapping of column names to text visible to the user
Dictionary<string, string> cols = new Dictionary<string, string>()
{
    { "NAME", "Name" },
    { "DESCRIPTION", "Description" }
};

// Call method:
RegenerateColumns(MyGrid, table, cols);

// Rebind the data to the grid
MyGrid.DataSource = table;
MyGrid.DataBind();