簡體   English   中英

如何將新數據表綁定到已經具有舊數據表的gridview

[英]How to bind a new datatable to a gridview which already has an old datatable

我有一個gridview在運行時綁定到數據表。 根據用戶的選擇,數據表的列可以更改,然后我需要將數據表綁定到相同的gridview。 如果用戶這樣做,則系統崩潰,因為gridview查找相同的列名。

如何清理所有的gridview並一次又一次綁定一個新的數據表?

這就是我綁定數據的方式。 每次列名稱更改時

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

您可能正在尋找如何在運行時重新生成“網格視圖”列的方法。 這篇CodeProject.com文章可能是票據: 如何在網格視圖中動態創建列

一些示例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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM