public static List <FilterOperationContext> GetFilterOperations(
            Type dataType)
        {
            Type underlyingType = Nullable.GetUnderlyingType(dataType);

            if ((object)underlyingType != null)
            {
                dataType = underlyingType;
            }
            List <FilterOperationContext> operationContextList = new List <FilterOperationContext>();

            operationContextList.Add(new FilterOperationContext("FilterFunctionNoFilter", FilterOperator.None));
            if ((object)dataType == (object)typeof(string) || (object)dataType == (object)typeof(Guid))
            {
                operationContextList.Add(new FilterOperationContext("FilterFunctionContains", FilterOperator.Contains));
                operationContextList.Add(new FilterOperationContext("FilterFunctionDoesNotContain", FilterOperator.NotContains));
                operationContextList.Add(new FilterOperationContext("FilterFunctionStartsWith", FilterOperator.StartsWith));
                operationContextList.Add(new FilterOperationContext("FilterFunctionEndsWith", FilterOperator.EndsWith));
            }
            if (GridViewHelper.IsNumeric(dataType) || (object)dataType == (object)typeof(DateTime) || ((object)dataType == (object)typeof(TimeSpan) || (object)dataType == (object)typeof(string)) || ((object)dataType == (object)typeof(char) || (object)dataType == (object)typeof(bool) || ((object)dataType == (object)typeof(ToggleState) || (object)dataType == (object)typeof(Color))) || ((object)dataType == (object)typeof(Guid) || dataType.IsEnum))
            {
                operationContextList.Add(new FilterOperationContext("FilterFunctionEqualTo", FilterOperator.IsEqualTo));
                operationContextList.Add(new FilterOperationContext("FilterFunctionNotEqualTo", FilterOperator.IsNotEqualTo));
                if ((object)dataType != (object)typeof(string) && (object)dataType != (object)typeof(char) && ((object)dataType != (object)typeof(bool) && (object)dataType != (object)typeof(ToggleState)) && (!dataType.IsEnum && (object)dataType != (object)typeof(Color)))
                {
                    operationContextList.Add(new FilterOperationContext("FilterFunctionGreaterThan", FilterOperator.IsGreaterThan));
                    operationContextList.Add(new FilterOperationContext("FilterFunctionLessThan", FilterOperator.IsLessThan));
                    operationContextList.Add(new FilterOperationContext("FilterFunctionGreaterThanOrEqualTo", FilterOperator.IsGreaterThanOrEqualTo));
                    operationContextList.Add(new FilterOperationContext("FilterFunctionLessThanOrEqualTo", FilterOperator.IsLessThanOrEqualTo));
                }
            }
            operationContextList.Add(new FilterOperationContext("FilterFunctionIsNull", FilterOperator.IsNull));
            operationContextList.Add(new FilterOperationContext("FilterFunctionNotIsNull", FilterOperator.IsNotNull));
            return(operationContextList);
        }
Esempio n. 2
0
 public static FilterOperator GetDefaultFilterOperator(System.Type dataType)
 {
     if ((object)dataType == (object)typeof(string))
     {
         return(FilterOperator.Contains);
     }
     return(GridViewHelper.IsNumeric(dataType) || (object)dataType == (object)typeof(DateTime) || (dataType.IsEnum || (object)dataType == (object)typeof(char)) ? FilterOperator.IsEqualTo : FilterOperator.None);
 }
Esempio n. 3
0
        public static GridViewDataColumn AutoGenerateGridColumn(
            System.Type columnType,
            ISite site)
        {
            if (columnType.IsGenericType && (object)columnType.GetGenericTypeDefinition() == (object)typeof(Nullable <>))
            {
                columnType = Nullable.GetUnderlyingType(columnType);
            }
            GridViewDataColumn gridViewDataColumn;

            if ((object)columnType == (object)typeof(bool) || (object)columnType == (object)typeof(Telerik.WinControls.Enumerations.ToggleState))
            {
                gridViewDataColumn = (GridViewDataColumn) new GridViewCheckBoxColumn();
            }
            else if ((object)columnType == (object)typeof(byte[]) || (object)columnType == (object)typeof(Image) || ((object)columnType == (object)typeof(Icon) || (object)columnType == (object)typeof(Bitmap)))
            {
                gridViewDataColumn = (GridViewDataColumn) new GridViewImageColumn();
            }
            else if ((object)columnType == (object)typeof(DateTime))
            {
                gridViewDataColumn = (GridViewDataColumn) new GridViewDateTimeColumn();
            }
            else if (GridViewHelper.IsNumeric(columnType) || GridViewHelper.IsNumericSql(columnType))
            {
                gridViewDataColumn          = (GridViewDataColumn) new GridViewDecimalColumn();
                gridViewDataColumn.DataType = columnType;
            }
            else if ((object)columnType == (object)typeof(Color))
            {
                gridViewDataColumn = (GridViewDataColumn) new GridViewColorColumn();
            }
            else if (columnType.IsEnum)
            {
                GridViewComboBoxColumn viewComboBoxColumn = new GridViewComboBoxColumn();
                (EnumBinder)columnType.Target = (object)viewComboBoxColumn;
                if (site != null)
                {
                    IDesignerHost service = (IDesignerHost)site.GetService(typeof(IDesignerHost));
                    if (service != null)
                    {
                        EnumBinder component = (EnumBinder)service.CreateComponent(typeof(EnumBinder));
                        component.Source = columnType;
                        component.Target = (object)viewComboBoxColumn;
                    }
                }
                viewComboBoxColumn.DataType = columnType;
                gridViewDataColumn          = (GridViewDataColumn)viewComboBoxColumn;
            }
            else
            {
                gridViewDataColumn = (GridViewDataColumn) new GridViewTextBoxColumn();
            }
            return(gridViewDataColumn);
        }
        protected virtual RadDropDownMenu CreateFilterMenu(System.Type dataType)
        {
            FilterDescriptor          descriptor       = this.Descriptor;
            CompositeFilterDescriptor filterDescriptor = descriptor as CompositeFilterDescriptor;

            CompositeFilterDescriptor.DescriptorType descriptorType = CompositeFilterDescriptor.GetDescriptorType(filterDescriptor);
            RadDropDownMenu menu = new RadDropDownMenu();
            List <FilterOperationContext> filterOperations = FilterOperationContext.GetFilterOperations(dataType);
            bool flag = this.ColumnInfo is GridViewMultiComboBoxColumn;

            foreach (FilterOperationContext context in filterOperations)
            {
                if (!flag || context.Operator == FilterOperator.None || (context.Operator == FilterOperator.IsEqualTo || context.Operator == FilterOperator.IsNotEqualTo))
                {
                    RadFilterOperationMenuItem operationMenuItem = new RadFilterOperationMenuItem(context);
                    operationMenuItem.IsChecked = filterDescriptor == null && operationMenuItem.Operator == descriptor.Operator;
                    operationMenuItem.Click    += new EventHandler(this.FilterMenuItem_Click);
                    menu.Items.Add((RadItem)operationMenuItem);
                }
            }
            if (GridViewHelper.IsNumeric(dataType) || (object)dataType == (object)typeof(DateTime))
            {
                RadFilterComposeMenuItem filterComposeMenuItem1 = new RadFilterComposeMenuItem("FilterFunctionsBetween");
                filterComposeMenuItem1.IsChecked        = filterDescriptor != null && descriptorType == CompositeFilterDescriptor.DescriptorType.Between;
                filterComposeMenuItem1.FilterDescriptor = (FilterDescriptor)this.GetCompositeFilterDescriptor(CompositeFilterDescriptor.DescriptorType.Between, filterDescriptor, dataType);
                filterComposeMenuItem1.Click           += new EventHandler(this.FilterMenuItem_Click);
                menu.Items.Add((RadItem)filterComposeMenuItem1);
                RadFilterComposeMenuItem filterComposeMenuItem2 = new RadFilterComposeMenuItem("FilterFunctionNotBetween");
                filterComposeMenuItem2.IsChecked        = descriptorType == CompositeFilterDescriptor.DescriptorType.NotBetween;
                filterComposeMenuItem2.FilterDescriptor = (FilterDescriptor)this.GetCompositeFilterDescriptor(CompositeFilterDescriptor.DescriptorType.NotBetween, filterDescriptor, dataType);
                filterComposeMenuItem2.Click           += new EventHandler(this.FilterMenuItem_Click);
                menu.Items.Add((RadItem)filterComposeMenuItem2);
            }
            if ((object)dataType != (object)typeof(Image))
            {
                RadFilterComposeMenuItem filterComposeMenuItem = new RadFilterComposeMenuItem("FilterFunctionsCustom");
                filterComposeMenuItem.FilterDescriptor = descriptor.Clone() as FilterDescriptor;
                filterComposeMenuItem.Click           += new EventHandler(this.FilterMenuItem_Click);
                filterComposeMenuItem.IsChecked        = filterDescriptor != null && descriptorType == CompositeFilterDescriptor.DescriptorType.Unknown;
                menu.Items.Add((RadItem)filterComposeMenuItem);
            }
            menu.PopupOpening += new RadPopupOpeningEventHandler(this.contextMenu_PopupOpening);
            menu.PopupClosed  += new RadPopupClosedEventHandler(this.contextMenu_PopupClosed);
            GridViewContextMenuManager.UpdateMenuTheme((GridVisualElement)this.GridViewElement, menu);
            return(menu);
        }
Esempio n. 5
0
        protected virtual void CreateFilterOperationsMenuItems()
        {
            FilterDescriptor          filterDescriptor1 = this.GetFilterDescriptor();
            CompositeFilterDescriptor filterDescriptor2 = filterDescriptor1 as CompositeFilterDescriptor;

            CompositeFilterDescriptor.DescriptorType descriptorType = CompositeFilterDescriptor.GetDescriptorType(filterDescriptor2);
            RadMenuItem radMenuItem = new RadMenuItem();

            radMenuItem.IsChecked = false;
            radMenuItem.Text      = LocalizationProvider <RadGridLocalizationProvider> .CurrentProvider.GetLocalizedString("FilterMenuAvailableFilters");

            radMenuItem.StretchVertically = false;
            this.Items.Add((RadItem)radMenuItem);
            RadMenuSeparatorItem menuSeparatorItem = new RadMenuSeparatorItem();

            menuSeparatorItem.StretchVertically = false;
            this.Items.Add((RadItem)menuSeparatorItem);
            System.Type filteringDataType = this.ColumnFilteringDataType;
            foreach (FilterOperationContext filterOperation in FilterOperationContext.GetFilterOperations(filteringDataType))
            {
                if (filterOperation.Operator == FilterOperator.None || filterOperation.Operator == FilterOperator.IsNull || filterOperation.Operator == FilterOperator.IsNotNull)
                {
                    RadFilterOperationMenuItem operationMenuItem = new RadFilterOperationMenuItem(filterOperation);
                    operationMenuItem.Click += new EventHandler(this.FilterMenuItem_Click);
                    if (filterOperation.Operator == FilterOperator.None)
                    {
                        operationMenuItem.Enabled = filterDescriptor2 != null && filterDescriptor2.Operator != FilterOperator.None || operationMenuItem.Operator != filterDescriptor1.Operator;
                        operationMenuItem.Text    = LocalizationProvider <RadGridLocalizationProvider> .CurrentProvider.GetLocalizedString("FilterMenuClearFilters");

                        operationMenuItem.Image             = (Image)Resources.ClearFilter;
                        operationMenuItem.TextImageRelation = TextImageRelation.ImageBeforeText;
                        operationMenuItem.ImageAlignment    = ContentAlignment.MiddleLeft;
                        operationMenuItem.DisplayStyle      = DisplayStyle.ImageAndText;
                        this.Items.Insert(0, (RadItem)operationMenuItem);
                    }
                    else
                    {
                        operationMenuItem.IsChecked = (filterDescriptor2 == null || filterDescriptor2.Operator == FilterOperator.None) && operationMenuItem.Operator == filterDescriptor1.Operator;
                        if (operationMenuItem.IsChecked)
                        {
                            radMenuItem.IsChecked = true;
                        }
                        radMenuItem.Items.Add((RadItem)operationMenuItem);
                    }
                }
                else
                {
                    RadFilterComposeMenuItem filterComposeMenuItem = new RadFilterComposeMenuItem();
                    filterComposeMenuItem.Text                      = filterOperation.Name;
                    filterComposeMenuItem.FilterDescriptor          = filterDescriptor1.Clone() as FilterDescriptor;
                    filterComposeMenuItem.FilterDescriptor.Operator = filterOperation.Operator;
                    filterComposeMenuItem.Click                    += new EventHandler(this.FilterMenuItem_Click);
                    filterComposeMenuItem.IsChecked                 = (filterDescriptor2 == null || filterDescriptor2.Operator == FilterOperator.None) && filterOperation.Operator == filterDescriptor1.Operator;
                    if (filterComposeMenuItem.IsChecked)
                    {
                        radMenuItem.IsChecked = true;
                    }
                    radMenuItem.Items.Add((RadItem)filterComposeMenuItem);
                }
            }
            if (GridViewHelper.IsNumeric(filteringDataType) || (object)filteringDataType == (object)typeof(DateTime))
            {
                RadFilterComposeMenuItem filterComposeMenuItem1 = new RadFilterComposeMenuItem("FilterFunctionsBetween");
                filterComposeMenuItem1.IsChecked = filterDescriptor2 != null && filterDescriptor2.Operator != FilterOperator.None && descriptorType == CompositeFilterDescriptor.DescriptorType.Between;
                if (filterComposeMenuItem1.IsChecked)
                {
                    radMenuItem.IsChecked = true;
                }
                filterComposeMenuItem1.FilterDescriptor = (FilterDescriptor)this.GetCompositeFilterDescriptor(CompositeFilterDescriptor.DescriptorType.Between, filterDescriptor2);
                filterComposeMenuItem1.Click           += new EventHandler(this.FilterMenuItem_Click);
                radMenuItem.Items.Add((RadItem)filterComposeMenuItem1);
                RadFilterComposeMenuItem filterComposeMenuItem2 = new RadFilterComposeMenuItem("FilterFunctionNotBetween");
                filterComposeMenuItem2.IsChecked = descriptorType == CompositeFilterDescriptor.DescriptorType.NotBetween;
                if (filterComposeMenuItem2.IsChecked)
                {
                    radMenuItem.IsChecked = true;
                }
                filterComposeMenuItem2.FilterDescriptor = (FilterDescriptor)this.GetCompositeFilterDescriptor(CompositeFilterDescriptor.DescriptorType.NotBetween, filterDescriptor2);
                filterComposeMenuItem2.Click           += new EventHandler(this.FilterMenuItem_Click);
                radMenuItem.Items.Add((RadItem)filterComposeMenuItem2);
            }
            if ((object)filteringDataType == (object)typeof(Image))
            {
                return;
            }
            RadFilterComposeMenuItem filterComposeMenuItem3 = new RadFilterComposeMenuItem("FilterFunctionsCustom");

            filterComposeMenuItem3.FilterDescriptor = filterDescriptor1.Clone() as FilterDescriptor;
            filterComposeMenuItem3.Click           += new EventHandler(this.FilterMenuItem_Click);
            filterComposeMenuItem3.IsChecked        = filterDescriptor2 != null && filterDescriptor2.Operator != FilterOperator.None && descriptorType == CompositeFilterDescriptor.DescriptorType.Unknown;
            if (filterComposeMenuItem3.IsChecked)
            {
                radMenuItem.IsChecked = true;
            }
            radMenuItem.Items.Add((RadItem)filterComposeMenuItem3);
        }