Filtering does not work correctly when NotConains and Contains filters are combined. Work around: private void radGridView1_FilterExpressionChanged(object sender, FilterExpressionChangedEventArgs e) { List<string> filterExpressions = new List<string>(); for (int i = 0; i < this.radGridView1.FilterDescriptors.Count; i++) { FilterDescriptor descriptor = this.radGridView1.FilterDescriptors[i]; string expression = null; CompositeFilterDescriptor compositeFilterDescriptor = descriptor as CompositeFilterDescriptor; if (compositeFilterDescriptor != null) { expression = CompositeFilterDescriptor.GetCompositeExpression(compositeFilterDescriptor); } else { expression = FilterDescriptor.GetExpression(descriptor); } if (!string.IsNullOrEmpty(expression)) { filterExpressions.Add("(" + expression + ")"); } } string logicalOperator = (this.radGridView1.FilterDescriptors.LogicalOperator == FilterLogicalOperator.And) ? " AND " : " OR "; string resultExpression = String.Join(logicalOperator, filterExpressions.ToArray()); e.FilterExpression = resultExpression; }