/// <summary> /// Opens the FilterOptionPopup with the FilterOptionList. /// </summary> public virtual void OpenFilterOptionPopup() { if (this.FilterOptionButtonVisibility == Visibility.Collapsed) { return; } if (!this.ColumnBase.IsEditing) { this.ColumnBase.Renderer.DataGrid.SelectionController.CurrentCellManager.BeginEdit(); } var list = this.GetFilterOptionsList(); if (list.Count > 0) { this.FilterOptionsList.ItemsSource = list; this.FilterOptionsList.SelectedItem = FilterRowHelpers.GetResourceWrapper(this.ColumnBase.GridColumn.FilterRowCondition); #if !WPF this.FilterOptionPopup.VerticalOffset = this.ActualHeight; #endif FilterOptionPopup.IsOpen = true; #if WPF this.FilterOptionsList.ItemContainerGenerator.StatusChanged += OnItemContainerGeneratorStatusChanged; #endif } }
/// <summary> /// Process the filtering when the FilterRowCondition is changed in corresponding column. /// </summary> /// <param name="filterRowCondition">The new FilterRowCondition that have been changed.</param> public virtual void OnFilterRowConditionChanged(string filterRowCondition) { if (filterRowCondition == FilterRowHelpers.GetResourceWrapper(this.FilterRowCell.DataColumn.GridColumn.FilterRowCondition)) return; this.FilterRowCell.DataColumn.GridColumn.UpdateFilterType(FilterRowHelpers.GetFilterRowCondition(filterRowCondition)); object filterValue; if (this.IsInEditing) filterValue = this.GetControlValue(); else filterValue = this.FilterRowCell.DataColumn.GridColumn.FilterPredicates.Count > 0 && this.FilterRowCell.DataColumn.GridColumn.FilteredFrom == FilteredFrom.FilterRow ? this.FilterRowCell.DataColumn.GridColumn.FilterPredicates[0].FilterValue : null; var filterType = this.FilterRowCell.DataColumn.GridColumn.FilterRowCondition; this.ProcessSingleFilter(filterValue); this.SetFocus(true); if (this.IsInEditing && (filterType == FilterRowCondition.Empty || filterType == FilterRowCondition.NotEmpty || filterType == FilterRowCondition.NotNull || filterType == FilterRowCondition.Null)) { this.SetControlValue(null); this.DataGrid.SelectionController.CurrentCellManager.EndEdit(); } else if (!this.IsInEditing) #if WPF Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() => { #endif this.DataGrid.SelectionController.CurrentCellManager.BeginEdit(); #if WPF }), DispatcherPriority.ApplicationIdle); #endif }
/// <summary> /// Gets the FilterText that want to be displayed in particular FilterRow Cell. /// </summary> /// <param name="filterValues">The list of FilterPredicates that have been created to the particular column.</param> public virtual string GetFilterText(List<FilterPredicate> filterPredicates) { string _filterText = string.Empty; if (filterPredicates.Count > 0) { #if WPF if(this.EditorType == typeof(ComboBoxAdv) && this.HasCurrentCellState) { var comboBox = (ComboBoxAdv) this.CurrentCellRendererElement; if (comboBox.AllowMultiSelect) { var selectedItems = ((IList) comboBox.SelectedItems).Cast<FilterRowElement>().ToList(); foreach (var item in selectedItems) { _filterText += item.DisplayText; if (selectedItems.IndexOf(item) < selectedItems.Count - 1) _filterText += comboBox.SelectedValueDelimiter; } } else _filterText = (comboBox.SelectedItem as FilterRowElement).DisplayText; return _filterText; } #endif var filterRowCond = this.FilterRowCell.DataColumn.GridColumn.FilterRowCondition; if (filterRowCond == FilterRowCondition.Null || filterRowCond == FilterRowCondition.NotNull || filterRowCond == FilterRowCondition.Empty || filterRowCond == FilterRowCondition.NotEmpty) _filterText = FilterRowHelpers.GetResourceWrapper(this.FilterRowCell.DataColumn.GridColumn.FilterRowCondition); else { var filterValue = filterPredicates[0].FilterValue; if (filterValue != null && filterValue.ToString() != string.Empty) _filterText = this.FilterRowCell.DataColumn.GridColumn.GetFormatedFilterText(filterValue); } } return _filterText; }