private void prepareColumnFilters() { if (IsHeaderFilterVisible) { for (int i = 0; i < this.Columns.Count; i++) { DataGridColumnHeader header = GetColumnHeaderFromColumn(this.Columns[i]); CollectionGridColumn idgc = this.Columns[i] as CollectionGridColumn; if (header != null && idgc != null) { ContentControl cc = header.FindVisualChildByName <ContentControl>("columnFilterHost"); if (cc != null && idgc.ColumnFilterControl != null) { var colFlt = idgc.ColumnFilterControl; colFlt.SetBinding(FrameworkElement.VisibilityProperty, new Binding("IsSqlEditMode") { Source = this.Collection, Converter = new Converters.BoolToVisibilityReverse() }); cc.Content = colFlt; } Button closeButton = header.FindVisualChildByName <Button>("btnClose"); var column = this.Columns[i]; RoutedEventHandler closeButtonClick = async(s, e) => { if (this.Columns.Count == 1) { MessageBox.Show("Can't remove last column"); } else { this.Columns.Remove(column); if (this.Collection != null) { await this.Collection.RemoveColumn(idgc.PropertyDefinition.Path); } } }; closeButton.Click -= closeButtonClick; closeButton.Click += closeButtonClick; } } } HideShowFilterOnHeaders(!this.IsHeaderFilterVisible); _columnFiltersPrepared = true; }
public void Init() { this.Columns.Clear(); if (this.Collection != null) { foreach (var column in this.Collection.Columns) { if (column.IsNotEmpty()) { var col = new CollectionGridColumn(this, column); if (column.Path == "id") { col.MinWidth = 80; } this.Columns.Add(col); this.Collection.Filter.FieldsFilter.SetFieldFilterPropertyType(column.Path, column.Type); } } } this.ForceColumnFiltersRerender(); }