Hello Telerik
today I saw CompositeFilterDescriptor in radgridview it is very amazing ,I have a question a bout it ,I want to use it in GridViewMultiComboBoxColumn so I wrote this code
private void GrdItm_CellBeginEdit(object sender, GridViewCellCancelEventArgs e)
{
if (GrdItm.CurrentColumn is GridViewMultiComboBoxColumn)
{
if (!isColumnAdded)
{
isColumnAdded = true;
RadMultiColumnComboBoxElement editor = (RadMultiColumnComboBoxElement)GrdItm.ActiveEditor;
CompositeFilterDescriptor compositeFilter = new CompositeFilterDescriptor();
compositeFilter.FilterDescriptors.Add(new FilterDescriptor("Title", FilterOperator.Contains, string.Empty));
editor.AutoFilter = true;
}
editor.EditorControl.FilterChanged += new GridViewCollectionChangedEventHandler(EditorControl_FilterChanged);
}
}
void EditorControl_FilterChanged(object sender, GridViewCollectionChangedEventArgs e)
{
if (e.NewItems == null || e.NewItems.Count == 0 )//|| e.NewItems[0] is FilterDescriptor)
{
return;
}
RadMultiColumnComboBoxElement editor = (RadMultiColumnComboBoxElement)GrdItm.ActiveEditor;
editor.EditorControl.FilterChanged -= new GridViewCollectionChangedEventHandler(EditorControl_FilterChanged);
CompositeFilterDescriptor MainCompos=e.NewItems[0] as CompositeFilterDescriptor;
if (MainCompos.FilterDescriptors.Count > 0)
{
FilterDescriptor desc = MainCompos.FilterDescriptors[0] as FilterDescriptor;
if (desc != null && desc.Operator == FilterOperator.Contains && desc.Value != null)
{
editor.EditorControl.FilterDescriptors.Clear();
string[] values = (desc.Value as string).Split();
CompositeFilterDescriptor compositeDescriptor = new CompositeFilterDescriptor();
compositeDescriptor.LogicalOperator = FilterLogicalOperator.And;
for (int i = 0; i < values.Length; i++)
{
FilterDescriptor newDescriptor = new FilterDescriptor(desc.PropertyName, desc.Operator, values[i]);
compositeDescriptor.FilterDescriptors.Add(newDescriptor);
}
editor.EditorControl.FilterDescriptors.Add(compositeDescriptor);
}
}
editor.EditorControl.FilterChanged += new GridViewCollectionChangedEventHandler(EditorControl_FilterChanged);
}
now I need to Know is that a correct way or is there a better way to do this kind of filtering on GridViewMultiComboBoxColumn?
I am waitting eagerly for your response.