[英]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.