|
@@ -65,7 +65,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
|
|
- private readonly SfDataGrid DataGrid;
|
|
|
|
|
|
+ protected readonly SfDataGrid DataGrid;
|
|
|
|
|
|
private readonly ContextMenu ColumnsMenu;
|
|
private readonly ContextMenu ColumnsMenu;
|
|
|
|
|
|
@@ -373,7 +373,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
var columnindex = DataGrid.ResolveToGridVisibleColumnIndex(rowcolumnindex.ColumnIndex);
|
|
var columnindex = DataGrid.ResolveToGridVisibleColumnIndex(rowcolumnindex.ColumnIndex);
|
|
|
|
|
|
// Header Click Here!
|
|
// Header Click Here!
|
|
- if (rowcolumnindex.RowIndex == 0)
|
|
|
|
|
|
+ if (rowcolumnindex.RowIndex < DataGrid.StackedHeaderRows.Count + 1)
|
|
{
|
|
{
|
|
|
|
|
|
var column = GetColumn(columnindex);
|
|
var column = GetColumn(columnindex);
|
|
@@ -570,10 +570,36 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
|
|
|
private void DataGrid_FilterItemsPopulating(object? sender, GridFilterItemsPopulatingEventArgs e)
|
|
private void DataGrid_FilterItemsPopulating(object? sender, GridFilterItemsPopulatingEventArgs e)
|
|
{
|
|
{
|
|
- var col = DataGrid.Columns.IndexOf(e.Column);
|
|
|
|
- if (GetColumn(col) is DynamicActionColumn column && column.Filters is not null)
|
|
|
|
- e.ItemsSource = column.Filters.Select(x => new FilterElement
|
|
|
|
- { DisplayText = x, ActualValue = x, IsSelected = column.SelectedFilters is null || column.SelectedFilters.Contains(x) });
|
|
|
|
|
|
+ var colIdx = DataGrid.Columns.IndexOf(e.Column);
|
|
|
|
+ var column = GetColumn(colIdx);
|
|
|
|
+ if(column is not null)
|
|
|
|
+ {
|
|
|
|
+ var filterItems = Parent.GetColumnFilterItems(column);
|
|
|
|
+ if(filterItems is not null)
|
|
|
|
+ {
|
|
|
|
+ e.ItemsSource = filterItems.Select(x =>
|
|
|
|
+ {
|
|
|
|
+ var element = new FilterElement
|
|
|
|
+ {
|
|
|
|
+ DisplayText = x,
|
|
|
|
+ ActualValue = x,
|
|
|
|
+ };
|
|
|
|
+ if(column is DynamicActionColumn dac)
|
|
|
|
+ {
|
|
|
|
+ element.IsSelected = dac.SelectedFilters is null || dac.SelectedFilters.Contains(x);
|
|
|
|
+ }
|
|
|
|
+ return element;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ else if (column is DynamicActionColumn dac && dac.Filters is not null)
|
|
|
|
+ {
|
|
|
|
+ e.ItemsSource = dac.Filters.Select(x => new FilterElement {
|
|
|
|
+ DisplayText = x,
|
|
|
|
+ ActualValue = x,
|
|
|
|
+ IsSelected = dac.SelectedFilters is null || dac.SelectedFilters.Contains(x)
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
private void DataGrid_CellToolTipOpening(object? sender, GridCellToolTipOpeningEventArgs e)
|
|
private void DataGrid_CellToolTipOpening(object? sender, GridCellToolTipOpeningEventArgs e)
|
|
@@ -618,6 +644,10 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
list.Add(new(gridColumn.ColumnName, rowPredicate));
|
|
list.Add(new(gridColumn.ColumnName, rowPredicate));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ else if(col is DynamicActionColumn dac && dac.FilterRecord is not null && dac.SelectedFilters is not null && dac.SelectedFilters.Length > 0)
|
|
|
|
+ {
|
|
|
|
+ list.Add(new(column.MappingName, (row) => dac.FilterRecord(row, dac.SelectedFilters)));
|
|
|
|
+ }
|
|
}
|
|
}
|
|
return list;
|
|
return list;
|
|
}
|
|
}
|
|
@@ -829,7 +859,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
newcol.Width = column.Width;
|
|
newcol.Width = column.Width;
|
|
newcol.ColumnSizer = GridLengthUnitType.None;
|
|
newcol.ColumnSizer = GridLengthUnitType.None;
|
|
newcol.HeaderText = column.HeaderText;
|
|
newcol.HeaderText = column.HeaderText;
|
|
- newcol.AllowFiltering = column.Filters != null && column.Filters.Any();
|
|
|
|
|
|
+ newcol.AllowFiltering = column.Filters != null && column.Filters.Length != 0;
|
|
newcol.AllowSorting = false;
|
|
newcol.AllowSorting = false;
|
|
newcol.FilterRowOptionsVisibility = Visibility.Collapsed;
|
|
newcol.FilterRowOptionsVisibility = Visibility.Collapsed;
|
|
newcol.ShowHeaderToolTip = column.ToolTip != null;
|
|
newcol.ShowHeaderToolTip = column.ToolTip != null;
|
|
@@ -926,21 +956,34 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
cellstyle.Setters.Add(new Setter(Control.BackgroundProperty,
|
|
cellstyle.Setters.Add(new Setter(Control.BackgroundProperty,
|
|
new Binding()
|
|
new Binding()
|
|
{
|
|
{
|
|
- Path = new PropertyPath("."), Converter = CellBackgroundConverter,
|
|
|
|
- ConverterParameter = column
|
|
|
|
|
|
+ Path = new PropertyPath("."),
|
|
|
|
+ Converter = CellBackgroundConverter,
|
|
|
|
+ ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
|
|
}));
|
|
}));
|
|
cellstyle.Setters.Add(new Setter(Control.ForegroundProperty,
|
|
cellstyle.Setters.Add(new Setter(Control.ForegroundProperty,
|
|
new Binding()
|
|
new Binding()
|
|
- { Converter = CellForegroundConverter, ConverterParameter = column }));
|
|
|
|
|
|
+ {
|
|
|
|
+ Converter = CellForegroundConverter,
|
|
|
|
+ ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
|
|
|
|
+ }));
|
|
cellstyle.Setters.Add(new Setter(Control.FontSizeProperty,
|
|
cellstyle.Setters.Add(new Setter(Control.FontSizeProperty,
|
|
new Binding()
|
|
new Binding()
|
|
- { Converter = CellFontSizeConverter, ConverterParameter = column }));
|
|
|
|
|
|
+ {
|
|
|
|
+ Converter = CellFontSizeConverter,
|
|
|
|
+ ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
|
|
|
|
+ }));
|
|
cellstyle.Setters.Add(new Setter(Control.FontStyleProperty,
|
|
cellstyle.Setters.Add(new Setter(Control.FontStyleProperty,
|
|
new Binding()
|
|
new Binding()
|
|
- { Converter = CellFontStyleConverter, ConverterParameter = column }));
|
|
|
|
|
|
+ {
|
|
|
|
+ Converter = CellFontStyleConverter,
|
|
|
|
+ ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
|
|
|
|
+ }));
|
|
cellstyle.Setters.Add(new Setter(Control.FontWeightProperty,
|
|
cellstyle.Setters.Add(new Setter(Control.FontWeightProperty,
|
|
new Binding()
|
|
new Binding()
|
|
- { Converter = CellFontWeightConverter, ConverterParameter = column }));
|
|
|
|
|
|
+ {
|
|
|
|
+ Converter = CellFontWeightConverter,
|
|
|
|
+ ConverterParameter = new DynamicGridCellStyleParameters(column,DependencyProperty.UnsetValue)
|
|
|
|
+ }));
|
|
newcol.CellStyle = cellstyle;
|
|
newcol.CellStyle = cellstyle;
|
|
|
|
|
|
DataGrid.Columns.Add(newcol);
|
|
DataGrid.Columns.Add(newcol);
|