protected virtual ListFilterSelectedMode GetGridFilteredValues( FilterDescriptorCollection descriptorCollection, ref RadListFilterDistinctValuesTable selectedValuesList, ref RadListFilterDistinctValuesTable excludedValuesList) { ListFilterSelectedMode filterSelectedMode = ListFilterSelectedMode.All; foreach (FilterDescriptor descriptor in (Collection <FilterDescriptor>)descriptorCollection) { if (descriptor is CompositeFilterDescriptor) { filterSelectedMode = this.GetGridFilteredValues(((CompositeFilterDescriptor)descriptor).FilterDescriptors, ref selectedValuesList, ref excludedValuesList); } else if (descriptor.PropertyName == this.DataColumn.Name) { switch (descriptor.Operator) { case FilterOperator.None: case FilterOperator.IsLike: case FilterOperator.IsNotLike: case FilterOperator.IsLessThan: case FilterOperator.IsLessThanOrEqualTo: case FilterOperator.IsGreaterThanOrEqualTo: case FilterOperator.IsGreaterThan: case FilterOperator.StartsWith: case FilterOperator.EndsWith: case FilterOperator.Contains: case FilterOperator.NotContains: case FilterOperator.IsContainedIn: case FilterOperator.IsNotContainedIn: filterSelectedMode = ListFilterSelectedMode.None; continue; case FilterOperator.IsEqualTo: selectedValuesList.Add(descriptor.Value); filterSelectedMode = ListFilterSelectedMode.Custom; continue; case FilterOperator.IsNotEqualTo: excludedValuesList.Add(descriptor.Value); filterSelectedMode = ListFilterSelectedMode.Custom; continue; case FilterOperator.IsNull: return(ListFilterSelectedMode.Null); case FilterOperator.IsNotNull: return(ListFilterSelectedMode.NotNull); default: continue; } } } return(filterSelectedMode); }
protected virtual void CreateListFilterMenuItems() { this.textBoxMenuItem = new FilterMenuTextBoxItem(); this.textBoxMenuItem.TextBox.TextChanged += new EventHandler(this.textBoxSearch_TextChanged); this.Items.Add((RadItem)this.textBoxMenuItem); System.Type filteringDataType = this.ColumnFilteringDataType; FilterMenuTreeItem filterMenuTreeItem = new FilterMenuTreeItem(); filterMenuTreeItem.TreeElement.GroupedDateValues = this.groupedDateValues && ((object)filteringDataType == (object)typeof(DateTime) || (object)filteringDataType == (object)typeof(DateTime?)); this.listFilterElement = (IRadListFilterElement)filterMenuTreeItem.TreeElement; this.menuTreeElement = filterMenuTreeItem.TreeElement; this.listFilterElement.SelectionChanged += new EventHandler(this.ListFilterElement_SelectionChanged); this.Items.Add((RadItem)filterMenuTreeItem); this.buttonsMenuItem = new FilterMenuButtonsItem(); this.buttonsMenuItem.ButtonOK.Click += new EventHandler(this.ButtonOK_Click); this.buttonsMenuItem.ButtonCancel.Click += new EventHandler(this.ButtonCancel_Click); this.Items.Add((RadItem)this.buttonsMenuItem); RadListFilterDistinctValuesTable distinctValuesTable = this.GetDistinctValuesTable(); this.listFilterElement.DistinctListValues = distinctValuesTable; RadListFilterDistinctValuesTable selectedValuesList = new RadListFilterDistinctValuesTable(); selectedValuesList.FormatString = this.DataColumn.FormatString; RadListFilterDistinctValuesTable excludedValuesList = new RadListFilterDistinctValuesTable(); excludedValuesList.FormatString = this.DataColumn.FormatString; this.listFilterElement.SelectedMode = this.GetGridFilteredValues(this.DataColumn.OwnerTemplate.FilterDescriptors, ref selectedValuesList, ref excludedValuesList); if (excludedValuesList.Count > 0) { selectedValuesList.Clear(); foreach (DictionaryEntry dictionaryEntry in distinctValuesTable) { if (!excludedValuesList.Contains(dictionaryEntry.Key)) { if (!(dictionaryEntry.Value is ArrayList)) { selectedValuesList.Add(dictionaryEntry.Key); } else { selectedValuesList.Add(dictionaryEntry.Key.ToString(), (ArrayList)dictionaryEntry.Value); } } } } this.listFilterElement.SelectedValues = selectedValuesList; this.listFilterElement.EnableBlanks = this.DataColumn.ContainsBlanks; }
private void ValidateSelectedValues() { if (this.selectedValues == null) { this.selectedValues = new RadListFilterDistinctValuesTable(); } this.selectedValues.Clear(); if (this.treeValuesHash == null) { return; } if (this.groupedDateValues) { foreach (RadTreeNode node1 in (Collection <RadTreeNode>) this.allNode.Nodes) { if (node1.Visible || node1.IsInDesignMode) { foreach (RadTreeNode node2 in (Collection <RadTreeNode>)node1.Nodes) { if (node2.Visible || node2.IsInDesignMode) { foreach (RadTreeNode node3 in (Collection <RadTreeNode>)node2.Nodes) { if ((node3.Visible || node3.IsInDesignMode) && node3.Checked) { DateTime dateTime = new DateTime(Convert.ToInt32(node1.Text), Convert.ToInt32(node2.Text), Convert.ToInt32(node3.Text)); this.selectedValues.Add(dateTime.ToString(), (object)dateTime); } } } } } } } else { foreach (DictionaryEntry dictionaryEntry in this.treeValuesHash) { RadTreeNode key = (RadTreeNode)dictionaryEntry.Key; if ((key.Visible || key.IsInDesignMode) && (this.treeView.TreeViewElement.FilterPredicate == null || this.treeView.TreeViewElement.FilterPredicate(key)) && key.CheckState == Telerik.WinControls.Enumerations.ToggleState.On) { this.selectedValues.Add(key.Text, (ArrayList)dictionaryEntry.Value); } } } this.UpdateSelectionMode(); }
protected virtual RadListFilterDistinctValuesTable GetDistinctValuesTable() { RadListFilterDistinctValuesTable distinctValuesTable = new RadListFilterDistinctValuesTable(); distinctValuesTable.FormatString = this.dataColumn.FormatString; distinctValuesTable.DataConversionInfoProvider = (IDataConversionInfoProvider)this.dataColumn; GridViewColumnValuesCollection valuesWithFilter = this.dataColumn.DistinctValuesWithFilter; if (valuesWithFilter == null) { return(distinctValuesTable); } GridViewComboBoxColumn dataColumn = this.dataColumn as GridViewComboBoxColumn; if (dataColumn != null && !string.IsNullOrEmpty(dataColumn.ValueMember)) { foreach (object cellValue in valuesWithFilter) { if (cellValue != null && cellValue != DBNull.Value) { object filterValue = cellValue; object lookupValue = ((GridViewComboBoxColumn)this.dataColumn).GetLookupValue(cellValue); if (dataColumn.FilteringMode == GridViewFilteringMode.DisplayMember) { filterValue = lookupValue; } if (lookupValue != null) { distinctValuesTable.Add(lookupValue.ToString(), filterValue); } } } } else { foreach (object obj in valuesWithFilter) { distinctValuesTable.Add(obj); } } return(distinctValuesTable); }
protected virtual void OnButtonOkClick(EventArgs e) { FilterOperator filterOperator = FilterOperator.IsEqualTo; switch (this.listFilterElement.SelectedMode) { case ListFilterSelectedMode.All: filterOperator = FilterOperator.None; break; case ListFilterSelectedMode.Null: filterOperator = FilterOperator.IsNull; break; case ListFilterSelectedMode.NotNull: filterOperator = FilterOperator.IsNotNull; break; } if (filterOperator != FilterOperator.IsEqualTo) { this.SetFilterOperator(filterOperator); this.ClosePopup(RadPopupCloseReason.CloseCalled); } else { CompositeFilterDescriptor filterDescriptor1 = new CompositeFilterDescriptor(); filterDescriptor1.PropertyName = this.DataColumn.Name; RadListFilterDistinctValuesTable distinctValuesTable = this.GetDistinctValuesTable(); string localizedString = LocalizationProvider <RadGridLocalizationProvider> .CurrentProvider.GetLocalizedString("FilterMenuBlanks"); bool flag = this.listFilterElement.SelectedValues.Contains((object)localizedString); if (this.listFilterElement.SelectedValues.Count > distinctValuesTable.Count / 2 && !flag) { filterDescriptor1.LogicalOperator = FilterLogicalOperator.And; foreach (DictionaryEntry dictionaryEntry in distinctValuesTable) { object key = dictionaryEntry.Key; if (string.IsNullOrEmpty(Convert.ToString(key))) { key = (object)localizedString; } DateTime result1; object result2; if ((this.DataColumn is GridViewDateTimeColumn || (object)this.DataColumn.DataType == (object)typeof(DateTime) || (object)this.DataColumn.DataType == (object)typeof(DateTime?)) && DateTime.TryParse(key.ToString(), out result1) && RadDataConverter.Instance.TryFormat((object)(this.groupedDateValues ? result1.Date : result1), typeof(string), (IDataConversionInfoProvider)this.DataColumn, out result2) == null) { key = result2; } if (!this.listFilterElement.SelectedValues.Contains(key)) { foreach (object obj in (ArrayList)dictionaryEntry.Value) { FilterDescriptor filterDescriptor2 = obj != DBNull.Value ? (this.DataColumn is GridViewDateTimeColumn || (object)this.DataColumn.DataType == (object)typeof(DateTime) || (object)this.DataColumn.DataType == (object)typeof(DateTime?) ? (FilterDescriptor) new DateFilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, (DateTime?)obj, false) : new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, obj)) : new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsNotEqualTo, (object)null); filterDescriptor1.FilterDescriptors.Add(filterDescriptor2); } } } } else { filterDescriptor1.LogicalOperator = FilterLogicalOperator.Or; foreach (DictionaryEntry selectedValue in this.listFilterElement.SelectedValues) { foreach (object obj in (ArrayList)selectedValue.Value) { FilterDescriptor filterDescriptor2 = obj != DBNull.Value ? (this.DataColumn is GridViewDateTimeColumn || (object)this.DataColumn.DataType == (object)typeof(DateTime) || (object)this.DataColumn.DataType == (object)typeof(DateTime?) ? (FilterDescriptor) new DateFilterDescriptor(this.DataColumn.Name, FilterOperator.IsEqualTo, (DateTime?)obj, false) : new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsEqualTo, obj)) : new FilterDescriptor(this.DataColumn.Name, FilterOperator.IsEqualTo, (object)null); filterDescriptor1.FilterDescriptors.Add(filterDescriptor2); } } } this.FilterDescriptor = (FilterDescriptor)filterDescriptor1; this.OnFilterConfirmed(); } }