Пример #1
0
        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);
        }
Пример #2
0
        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;
        }
Пример #3
0
 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();
 }
Пример #4
0
        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);
        }
Пример #5
0
        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();
            }
        }