gpt4 book ai didi

c# - 在 WPF DataGrid 中保留用户定义的排序顺序

转载 作者:太空狗 更新时间:2023-10-29 20:08:30 32 4
gpt4 key购买 nike

我有一个 WPF DataGrid,其中填充了来自 DataSet 的数据。我将 CanUserSortColumns 设置为 true

是否可以在刷新网格时保留用户指定的排序?我让它保留了使用

选择的项目
  object selectedItem = dgInvoiceHeads.SelectedItem;

在刷新发生然后放置之前

 dgInvoiceHeads.SelectedItem = selectedItem;

刷新后。

但我似乎无法让它保留指定的排序。

最佳答案

以下代码是从 forum post 中提取的并展示了如何获取排序描述和列信息并进行恢复。

List<DataGridColumn> GetColumnInfo(DataGrid dg) {
List<DataGridColumn> columnInfos = new List<DataGridColumn>();
foreach (var column in dg.Columns) {
columnInfos.Add(column);
}
return columnInfos;
}

List<SortDescription> GetSortInfo(DataGrid dg) {
List<SortDescription> sortInfos = new List<SortDescription>();
foreach (var sortDescription in dg.Items.SortDescriptions) {
sortInfos.Add(sortDescription);
}
return sortInfos;
}

void SetColumnInfo(DataGrid dg, List<DataGridColumn> columnInfos) {
columnInfos.Sort((c1, c2) => { return c1.DisplayIndex - c2.DisplayIndex; });
foreach (var columnInfo in columnInfos) {
var column = dg.Columns.FirstOrDefault(col => col.Header == columnInfo.Header);
if (column != null) {
column.SortDirection = columnInfo.SortDirection;
column.DisplayIndex = columnInfo.DisplayIndex;
column.Visibility = columnInfo.Visibility;
}
}
}

void SetSortInfo(DataGrid dg, List<SortDescription> sortInfos) {
dg.Items.SortDescriptions.Clear();
foreach (var sortInfo in sortInfos) {
dg.Items.SortDescriptions.Add(sortInfo);
}
}

关于c# - 在 WPF DataGrid 中保留用户定义的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6468488/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com