Prevent tables grid from losing columns

This commit is contained in:
2026-03-21 16:24:58 +01:00
parent 7a0ce00429
commit 790eef5665
3 changed files with 37 additions and 4 deletions

View File

@@ -759,7 +759,12 @@
selectedGroupKey = string.Empty;
}
if (tableDetail.Columns.All(column => !string.Equals(column.Key, selectedColumnKey, StringComparison.OrdinalIgnoreCase)))
var matchingColumns = tableDetail.Columns
.Where(column => string.IsNullOrWhiteSpace(selectedColumnKey)
|| string.Equals(column.Key, selectedColumnKey, StringComparison.OrdinalIgnoreCase))
.ToList();
if (matchingColumns.Count == 0)
{
selectedColumnKey = string.Empty;
}

View File

@@ -129,9 +129,11 @@
cellIndex[(cell.RollBand, cell.GroupKey, cell.ColumnKey)] = cell;
}
var columnsToDisplay = ResolveVisibleColumns();
if (Detail.Groups.Count == 0)
{
foreach (var column in Detail.Columns.Where(MatchesColumnFilter))
foreach (var column in columnsToDisplay)
{
visibleColumns.Add(column);
displayColumns.Add((null, column.Key, column.Label));
@@ -139,12 +141,14 @@
}
else
{
foreach (var group in Detail.Groups.Where(MatchesGroupFilter))
var groupsToDisplay = ResolveVisibleGroups();
foreach (var group in groupsToDisplay)
{
visibleGroups.Add(group);
}
foreach (var column in Detail.Columns.Where(MatchesColumnFilter))
foreach (var column in columnsToDisplay)
{
visibleColumns.Add(column);
}
@@ -173,6 +177,28 @@
string.IsNullOrWhiteSpace(SelectedColumnKey)
|| string.Equals(column.Key, SelectedColumnKey, StringComparison.OrdinalIgnoreCase);
private IReadOnlyList<CriticalGroupReference> ResolveVisibleGroups()
{
var filteredGroups = Detail.Groups
.Where(MatchesGroupFilter)
.ToList();
return filteredGroups.Count > 0
? filteredGroups
: Detail.Groups;
}
private IReadOnlyList<CriticalColumnReference> ResolveVisibleColumns()
{
var filteredColumns = Detail.Columns
.Where(MatchesColumnFilter)
.ToList();
return filteredColumns.Count > 0
? filteredColumns
: Detail.Columns;
}
private bool MatchesModeFilter(CriticalTableCellDetail cell) =>
CurrentMode switch
{