Hello, I was wondering how to change and/or remove the "root" composite filter in the RadDataFilter. I am loading filters programmatically and I need to change the default "And" to an "Or". If this is not possible, than I just need to remove this root filter and add my own. Please see the code below as well as the attached screen shot. I am using .NET 4.0 (full) and Telerik 2013 Q1. Thank you.
XAML:
<T:RadDataFilter x:Name="filtMain" AutoGenerateItemPropertyDefinitions="False" />
Code Behind:
filtMain.ItemPropertyDefinitions.Add(new ItemPropertyDefinition("FirstName", typeof(string), "First Name"));
filtMain.ItemPropertyDefinitions.Add(new ItemPropertyDefinition("MiddleName", typeof(string), "Middle Name"));
filtMain.ItemPropertyDefinitions.Add(new ItemPropertyDefinition("LastName", typeof(string), "Last Name"));
CompositeFilterDescriptor parent = new CompositeFilterDescriptor() { LogicalOperator = FilterCompositionLogicalOperator.Or };
parent.FilterDescriptors.Add(new FilterDescriptor("FirstName", FilterOperator.EndsWith, "an"));
parent.FilterDescriptors.Add(new FilterDescriptor("MiddleName", FilterOperator.IsEqualTo, "Bob"));
parent.FilterDescriptors.Add(new FilterDescriptor("LastName", FilterOperator.DoesNotContain, "Doe"));
// FilterDescriptors is empty. Where is the root "And" composite that I see on the screen???
filtMain.FilterDescriptors.Add(parent);
<telerik:RadGridView AutoGenerateColumns="False" ItemsSource="{Binding Screens}"> <telerik:RadGridView.Columns> <telerik:GridViewComboBoxColumn x:Name="ScreenTypeCombo" UniqueName="ScreenTypeCombo" Header="Screen Type" Width="150" DataMemberBinding="{Binding SelectedScreenType}" SelectedValueMemberPath="ScreenType" DisplayMemberPath="Literal" ItemsSourceBinding="{Binding ScreenTypeLiterals}" /> </telerik:RadGridView.Columns>public enum ScreenTypes{ Master, Vertical, Multicolumn, Wrap, Detail, Transaction, Notes}public class ScreenTypeLiteral{ public ScreenTypes ScreenType { get; set; } public String Literal { get; set; } public ScreenTypeLiteral(ScreenTypes type, String lit) { ScreenType = type; Literal = lit; }}public class ScreenDescriptor{ public ICollectionView ScreenTypeLiterals { get { return _ScreenTypeLiterals; } set { _ScreenTypeLiterals = value; OnPropertyChanged(() => ScreenTypeLiterals); } } private ICollectionView _ScreenTypeLiterals; public ScreenTypeLiteral SelectedScreenType { get { return ScreenTypeLiterals.CurrentItem as ScreenTypeLiteral; } } public ScreenDescriptor() { ScreenTypeLiterals = CollectionViewSource.GetDefaultView(new List<ScreenTypeLiteral>() { {new ScreenTypeLiteral(ScreenTypes.Master, "Master View")}, {new ScreenTypeLiteral(ScreenTypes.Vertical, "Detail View")}, }); ScreenTypeLiterals.MoveCurrentToFirst(); }}public class Descriptor{ public ICollectionView Screens { get { return _screens; } set { _screens = value; OnPropertyChanged(() => Screens); } } private ICollectionView _screens = null; public Descriptor() { var list = new List<ScreenDescriptor>(); list.Add(new ScreenDescriptor()); list.Add(new ScreenDescriptor()); Screens = CollectionViewSource.GetDefaultView(list); Screens.MoveCurrentToFirst(); }}
Dear Telerik Team!
I'm handling SchedulerView's VisibleRangeChange event:
private ICommand visibleRangeChanged;public ICommand VisibleRangeChanged{ get { return this.visibleRangeChanged; } set { this.visibleRangeChanged = value; }}private void OnVisibleRangeExecuted(object param){//my code here}public bool OnVisibleRangeCanExecute(object param){ return param != null;}but in some cases, I would like to disable event execution, change some active view definition properties and attach back to the event. Is is possible and if so - could you please tell me how to do it?
Very best regards and thank you in advance
Krzysztof