【发布时间】:2015-08-20 08:24:13
【问题描述】:
如何动态更改 gridview 模板列的顺序?
【问题讨论】:
标签: gridview templates dynamic
如何动态更改 gridview 模板列的顺序?
【问题讨论】:
标签: gridview templates dynamic
迭代遍历 GridView 对象的所有列,并将它们存储在一个集合中强>。
List<DataControlField> columns = new List<DataControlField>();
foreach (DataControlField column in gv.Columns)
{
columns.Add(column);
}
重新排列集合中的列对象。
//Rearrange columns' collection..
清除 GridView 对象的所有列并将集合中的列添加到 GridView 对象。
gv.Columns.Clear();
foreach (DataControlField column in columns)
{
gv.Columns.Add(column);
}
这似乎不适用于模板字段。 删除并重新添加列后,模板字段为空 (绑定的字段显示正确的值)。
【讨论】:
在RowCreated 事件上,遍历每一列,将每一行的第一个单元格(模板字段)保存在一个变量(oCell)上并将其从集合中删除,然后使用column.Add(oCell) 添加它到集合结束。
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e){
GridViewRow row = e.Row;
// Intitialize TableCell list
List<TableCell> columns = new List<TableCell>();
foreach (DataControlField column in GridView1.Columns)
{
//Get the first Cell /Column
TableCell cell = row.Cells[0];
// Then Remove it after
row.Cells.Remove(cell);
//And Add it to the List Collections
columns.Add(cell);
}
// Add cells
row.Cells.AddRange(columns.ToArray());
}
【讨论】: