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); }
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); }
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); }
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); }