我有一个gridview,它在运行时绑定到数据表。根据用户选择,数据表的列可以更改,然后我需要将数据表绑定到同一网格视图。如果用户这样做,系统崩溃,因为gridview查找相同的列名称。
如何清理所有gridview并反复绑定新数据?
这是我绑定数据的方式。每次列名都在改变
DataTable result = dt_to_result_bolge_kiyaslama(dt);
gv_kiyaslama.DataSource = result;
gv_kiyaslama.DataBind();
答案 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();