RadDataFilter ArgumentException

3 posts, 0 answers
  1. Bart Reekmans
    Bart Reekmans avatar
    26 posts
    Member since:
    Mar 2010

    Posted 15 Jun 2012 Link to this post

    Hi,

    I'm trying to use a radfilter that filters the items in my radgridview, based on textinput in a textbox

    this is my code : 

    private void textBoxFilterValue_TextChanged(object sender, TextChangedEventArgs e)
    {
        string text = (sender as RadWatermarkTextBox).CurrentText;
     
        if (!string.IsNullOrEmpty(text))
        {
            if (mGridView != null && mFilter != null)
            {
                FilterDescriptor birthDateFilter = new FilterDescriptor();
                birthDateFilter.Member = "HtmlValue";
                birthDateFilter.Operator = FilterOperator.Contains;
                birthDateFilter.Value = text;
                birthDateFilter.IsCaseSensitive = false;
     
                mFilter.FilterDescriptors.Add(birthDateFilter);
            }
        }
        else            
        {
            mFilter.FilterDescriptors.Clear();
        }
    }


    but I get the following exception : 

    at Telerik.Windows.Data.Expressions.EnumerableFilterOperatorExpressionBuilder.GenerateContainsMethodCall(Expression source, Expression value, Boolean shouldNegate)
    at Telerik.Windows.Data.Expressions.EnumerableFilterOperatorExpressionBuilder.GenerateContains(Expression left, Expression right)
    at Telerik.Windows.Data.Expressions.FilterOperatorExpressionBuilderBase.CreateExpression(Expression left, Expression right)
    at Telerik.Windows.Data.Expressions.OperatorValueFilterDescriptorExpressionBuilderBase.CreateBodyExpression()
    at Telerik.Windows.Data.FilterDescriptor.CreateFilterExpression(ParameterExpression parameterExpression)
    at Telerik.Windows.Data.FilterDescriptorBase.CreateFilterExpression(Expression instance)
    at Telerik.Windows.Data.Expressions.FilterDescriptorCollectionExpressionBuilder.CreateBodyExpression()
    at Telerik.Windows.Data.CompositeFilterDescriptor.CreateFilterExpression(ParameterExpression parameterExpression)
    at Telerik.Windows.Data.FilterDescriptorBase.CreateFilterExpression(Expression instance)
    at Telerik.Windows.Data.CompositeFilterDescriptorCollection.CreateFilterExpression(Expression instance)
    at Telerik.Windows.Data.ICompositeFilterDescriptorExtensions.GetFilterFunction(ICompositeFilterDescriptor filterDescriptors, Type itemType)
    at Telerik.Windows.Data.QueryableCollectionView.InitializeInternalList(IQueryable view)
    at Telerik.Windows.Data.QueryableCollectionView.CreateInternalList()
    at Telerik.Windows.Data.QueryableCollectionView.EnsureInternalList()
    at Telerik.Windows.Data.QueryableCollectionView.get_InternalList()
    at Telerik.Windows.Data.QueryableCollectionView.EnsureRootGroup()
    at Telerik.Windows.Data.QueryableCollectionView.get_Groups()
    at Telerik.Windows.Controls.GridView.BaseItemsControl.GetEffectiveItems(BaseItemsControl itemsControl)
    at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.EnsureIndexTree()
    at Telerik.Windows.Controls.GridView.GridViewVirtualizingPanel.get_IndexTree()
    at Telerik.Windows.Controls.GridView.GridViewDataControl.InitializeShouldKeepScrollState()
    at Telerik.Windows.Controls.GridView.GridViewDataControl.OnItemsChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Controls.GridView.BaseItemsControl.OnItemCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
    at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.DataItemCollection.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.DataItemCollection.OnCollectionViewCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.Listener`2.ReceiveWeakEvent(Object sender, TArgs args)
    at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
    at Telerik.Windows.Data.QueryableCollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.QueryableCollectionView.RefreshOverride()
    at Telerik.Windows.Data.QueryableCollectionView.RefreshInternal()
    at Telerik.Windows.Data.QueryableCollectionView.RefreshOrDefer()
    at Telerik.Windows.Data.QueryableCollectionView.InvalidatePagingAndRefresh()
    at Telerik.Windows.Data.QueryableCollectionView.OnFilterDescriptorsCollectionChanged(Object sender, NotifyCollectionChangedEventArgs e)
    at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.RadObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.ObservableItemCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.RadObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.FilterDescriptorCollection.InsertItem(Int32 index, IFilterDescriptor item)
    at System.Collections.ObjectModel.Collection`1.Insert(Int32 index, T item)
    at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Insert(Int32 index, Object value)
    at Telerik.Windows.Data.CollectionHelper.Insert(IList target, IEnumerable newItems, Int32 startingIndex, IEqualityComparer itemComparer)
    at Telerik.Windows.Data.ObservableCollectionManager.HandleCollectionChanged(IList sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.ObservableCollectionManager.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
    at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.RadObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.ObservableItemCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.RadObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.FilterDescriptorCollection.InsertItem(Int32 index, IFilterDescriptor item)
    at System.Collections.ObjectModel.Collection`1.Insert(Int32 index, T item)
    at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Insert(Int32 index, Object value)
    at Telerik.Windows.Data.CollectionHelper.Insert(IList target, IEnumerable newItems, Int32 startingIndex, IEqualityComparer itemComparer)
    at Telerik.Windows.Data.ObservableCollectionManager.HandleCollectionChanged(IList sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.ObservableCollectionManager.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
    at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.RadObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.ObservableItemCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.RadObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.FilterDescriptorCollection.InsertItem(Int32 index, IFilterDescriptor item)
    at System.Collections.ObjectModel.Collection`1.Insert(Int32 index, T item)
    at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Insert(Int32 index, Object value)
    at Telerik.Windows.Data.CollectionHelper.Insert(IList target, IEnumerable newItems, Int32 startingIndex, IEqualityComparer itemComparer)
    at Telerik.Windows.Data.ObservableCollectionManager.HandleCollectionChanged(IList sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.ObservableCollectionManager.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
    at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.RadObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.ObservableItemCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.RadObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.FilterDescriptorCollection.InsertItem(Int32 index, IFilterDescriptor item)
    at System.Collections.ObjectModel.Collection`1.Insert(Int32 index, T item)
    at System.Collections.ObjectModel.Collection`1.System.Collections.IList.Insert(Int32 index, Object value)
    at Telerik.Windows.Data.CollectionHelper.Insert(IList target, IEnumerable newItems, Int32 startingIndex, IEqualityComparer itemComparer)
    at Telerik.Windows.Data.ObservableCollectionManager.HandleCollectionChanged(IList sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.ObservableCollectionManager.Telerik.Windows.Data.IWeakEventListener<System.Collections.Specialized.NotifyCollectionChangedEventArgs>.ReceiveWeakEvent(Object sender, NotifyCollectionChangedEventArgs args)
    at Telerik.Windows.Data.WeakEvent.WeakListener`1.Handler(Object sender, TArgs args)
    at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.RadObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at Telerik.Windows.Data.ObservableItemCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
    at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.RadObservableCollection`1.InsertItem(Int32 index, T item)
    at Telerik.Windows.Data.FilterDescriptorCollection.InsertItem(Int32 index, IFilterDescriptor item)
    at System.Collections.ObjectModel.Collection`1.Add(T item)
    at Artemis.Window1.textBoxFilterValue_TextChanged(Object sender, TextChangedEventArgs e) in R:\WPF\Sln_Huisartsen\Artemis\Window1.xaml.cs:line 187

    depending on user selection, the control gets loaded and unloaded several times (datatemplate selector).

    The code-line giving the exception is mFilter.FilterDescriptors.Add(birthDateFilter);
    Surrounding this statement with a try-catch block solves the problem.
    The filter continues to work, although an exception is thrown multiple times (every time the textchanged event is triggered) 
  2. Rossen Hristov
    Admin
    Rossen Hristov avatar
    2478 posts

    Posted 15 Jun 2012 Link to this post

    Hello,

    The filter does not like your descriptor for some reason, biut we cannot guess why from the information provided.

    Can you send us a runnable sample project that reproduces your exception so we can debug it and see what is really going on.

    Thanks in advance.

    Regards,
    Ross
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  3. UI for WPF is Visual Studio 2017 Ready
  4. Bart Reekmans
    Bart Reekmans avatar
    26 posts
    Member since:
    Mar 2010

    Posted 15 Jun 2012 Link to this post

    Hi,

    As far as I can understand, the Member property is the propertyname of the objects in the grid?
    My objects base class is ViewModelBase, with a property called HtmlValue

    When I change the value for the Member-property, the filter still seems to work?
    Adding an extra line of code seems to have solved the exception : birthDateFilter.MemberType = typeof(string);
Back to Top