|
@@ -32,6 +32,8 @@ using System.Windows.Media;
|
|
using System.Windows.Media.Effects;
|
|
using System.Windows.Media.Effects;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Threading;
|
|
using System.Windows.Threading;
|
|
|
|
+using Syncfusion.UI.Xaml.Grid.RowFilter;
|
|
|
|
+using Columns = InABox.Core.Columns;
|
|
using DataColumn = System.Data.DataColumn;
|
|
using DataColumn = System.Data.DataColumn;
|
|
using DataRow = System.Data.DataRow;
|
|
using DataRow = System.Data.DataRow;
|
|
using TimeSpanEdit = Syncfusion.Windows.Shared.TimeSpanEdit;
|
|
using TimeSpanEdit = Syncfusion.Windows.Shared.TimeSpanEdit;
|
|
@@ -131,13 +133,36 @@ public class DynamicGridGridUIComponent : IDynamicGridUIComponent, IDynamicGridG
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
|
|
+
|
|
|
|
+ public class GridFilterRowTextBoxRendererExt : GridFilterRowTextBoxRenderer
|
|
|
|
+ {
|
|
|
|
|
|
|
|
+ public override void OnInitializeDisplayElement(
|
|
|
|
+ DataColumnBase dataColumn,
|
|
|
|
+ TextBlock uiElement,
|
|
|
|
+ object dataContext)
|
|
|
|
+ {
|
|
|
|
+ base.OnInitializeDisplayElement(dataColumn, uiElement, dataContext);
|
|
|
|
+ object filterValue = dataColumn.GridColumn.FilteredFrom != FilteredFrom.FilterRow || dataColumn.GridColumn.FilterPredicates.Count <= 0
|
|
|
|
+ ? (object) null
|
|
|
|
+ : dataColumn.GridColumn.FilterPredicates.FirstOrDefault<FilterPredicate>().FilterValue;
|
|
|
|
+ uiElement.Text = filterValue != null ? (string) filterValue : string.Empty;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static GridFilterRowTextBoxRendererExt? renderer = null;
|
|
|
|
+
|
|
|
|
+
|
|
public DynamicGridGridUIComponent()
|
|
public DynamicGridGridUIComponent()
|
|
{
|
|
{
|
|
|
|
+
|
|
|
|
+
|
|
ColumnsMenu = new ContextMenu();
|
|
ColumnsMenu = new ContextMenu();
|
|
ColumnsMenu.Opened += ColumnsMenu_ContextMenuOpening;
|
|
ColumnsMenu.Opened += ColumnsMenu_ContextMenuOpening;
|
|
|
|
|
|
DataGrid = new SfDataGrid();
|
|
DataGrid = new SfDataGrid();
|
|
|
|
+ DataGrid.FilterRowCellRenderers.Add(nameof(GridFilterRowTextBoxRendererExt), new GridFilterRowTextBoxRendererExt());
|
|
DataGrid.VerticalAlignment = VerticalAlignment.Stretch;
|
|
DataGrid.VerticalAlignment = VerticalAlignment.Stretch;
|
|
DataGrid.HorizontalAlignment = HorizontalAlignment.Stretch;
|
|
DataGrid.HorizontalAlignment = HorizontalAlignment.Stretch;
|
|
DataGrid.HeaderContextMenu = ColumnsMenu;
|
|
DataGrid.HeaderContextMenu = ColumnsMenu;
|
|
@@ -897,10 +922,11 @@ public class DynamicGridGridUIComponent : IDynamicGridUIComponent, IDynamicGridG
|
|
|
|
|
|
private void ApplyFilterStyle(GridColumn column, bool filtering, bool allowSorting)
|
|
private void ApplyFilterStyle(GridColumn column, bool filtering, bool allowSorting)
|
|
{
|
|
{
|
|
- var filterstyle = new Style();
|
|
|
|
|
|
+
|
|
|
|
+ var filterRowCellStyle = new Style();
|
|
if (filtering)
|
|
if (filtering)
|
|
{
|
|
{
|
|
- filterstyle.Setters.Add(new Setter(Control.BackgroundProperty, DynamicGridUtils.FilterBackground));
|
|
|
|
|
|
+ filterRowCellStyle.Setters.Add(new Setter(Control.BackgroundProperty, DynamicGridUtils.FilterBackground));
|
|
column.ImmediateUpdateColumnFilter = true;
|
|
column.ImmediateUpdateColumnFilter = true;
|
|
column.ColumnFilter = ColumnFilter.Value;
|
|
column.ColumnFilter = ColumnFilter.Value;
|
|
column.FilterRowCondition = FilterRowCondition.Contains;
|
|
column.FilterRowCondition = FilterRowCondition.Contains;
|
|
@@ -910,15 +936,16 @@ public class DynamicGridGridUIComponent : IDynamicGridUIComponent, IDynamicGridG
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- filterstyle.Setters.Add(new Setter(Control.BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
|
|
|
|
- filterstyle.Setters.Add(new Setter(Control.IsEnabledProperty, false));
|
|
|
|
|
|
+ filterRowCellStyle.Setters.Add(new Setter(Control.BackgroundProperty, new SolidColorBrush(Colors.Gainsboro)));
|
|
|
|
+ filterRowCellStyle.Setters.Add(new Setter(UIElement.IsEnabledProperty, false));
|
|
column.ColumnFilter = ColumnFilter.Value;
|
|
column.ColumnFilter = ColumnFilter.Value;
|
|
column.AllowSorting = false;
|
|
column.AllowSorting = false;
|
|
column.FilterRowEditorType = "TextBox";
|
|
column.FilterRowEditorType = "TextBox";
|
|
column.FilterRowOptionsVisibility = Visibility.Collapsed;
|
|
column.FilterRowOptionsVisibility = Visibility.Collapsed;
|
|
}
|
|
}
|
|
|
|
|
|
- column.FilterRowCellStyle = filterstyle;
|
|
|
|
|
|
+
|
|
|
|
+ column.FilterRowCellStyle = filterRowCellStyle;
|
|
}
|
|
}
|
|
|
|
|
|
private void Filter_FilterChanged(IDynamicGridColumnFilter filter)
|
|
private void Filter_FilterChanged(IDynamicGridColumnFilter filter)
|
|
@@ -1235,14 +1262,18 @@ public class DynamicGridGridUIComponent : IDynamicGridUIComponent, IDynamicGridG
|
|
|
|
|
|
private void LoadDataColumn(DynamicGridColumn column)
|
|
private void LoadDataColumn(DynamicGridColumn column)
|
|
{
|
|
{
|
|
|
|
+
|
|
column.Editor = Parent.CustomiseEditor(column, column.Editor);
|
|
column.Editor = Parent.CustomiseEditor(column, column.Editor);
|
|
if (this.CreateEditorColumn(column, out var newcol))
|
|
if (this.CreateEditorColumn(column, out var newcol))
|
|
{
|
|
{
|
|
|
|
+
|
|
if (!newcol.VariableHeight)
|
|
if (!newcol.VariableHeight)
|
|
gridRowResizingOptions.ExcludeColumns.Add(newcol.MappingName);
|
|
gridRowResizingOptions.ExcludeColumns.Add(newcol.MappingName);
|
|
|
|
|
|
var newColumn = newcol.CreateGridColumn();
|
|
var newColumn = newcol.CreateGridColumn();
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ newColumn.FilterRowEditorType = nameof(GridFilterRowTextBoxRendererExt);
|
|
|
|
+
|
|
var summary = ConvertSummary(newcol.Summary());
|
|
var summary = ConvertSummary(newcol.Summary());
|
|
if (summary != null)
|
|
if (summary != null)
|
|
{
|
|
{
|