The error message appears when opening the custom option from the filter icon in RadGridView.
The error message should not appear as there is a text in the textbox. When the enter key is pressed, the textbox value is still not committed which leads to this error. As a workaround, we can create a custom CompositeDataFilterForm override the ProcessCmdKey where we can handle this case.
public class MyCompositeDataFilterForm : CompositeDataFilterForm
{
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if(keyData == Keys.Enter)
{
this.Controls[2] as RadButton).Focus();
(this.Controls[2] as RadButton).PerformClick();
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
private void RadGridView1_CreateCompositeFilterDialog(object sender, GridViewCreateCompositeFilterDialogEventArgs e)
{
var newForm = new MyCompositeDataFilterForm();
e.Dialog = newForm;
}
To reproduce: I want to add multiple items to a filter expression using the Is in list operator. It seems it is space delimited. For example, I want to filter for 'In Progress' and 'Late'. However, when I apply the filter it creates this 'In', 'Progress', and 'Late'. Workaround: Currently, the possible solution that I can suggest is to use underscores to separate the words , e.g. "In_Progress".
When setting the DataFilter.Expression property to an expression that contains negative values, the DataFilter ignores that condition.
Please refer to the attached sample project.
Workaround:One should be able to set the display text of each field (like header text in RadGridView). Very rarely does the displayed column header match the field name exactly. Workaround: https://www.telerik.com/forums/property-display-name#nZuLg2ytd0CXhz-4Q-6urQ
To reproduce: set the DataSource property and enable the sorting for the fields drop-down items: Me.RadDataFilter1.SortOrder = SortOrder.Descending Me.RadDataFilter1.SortFieldNames = True When you activate the drop-down editor to select a field name, you will notice that the items are always sorted ascending no matter the SortOrder. Note: RadDataFilter should allow you to sort the drop-down items in descending order. Workaround: Private Sub RadForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load AddHandler Me.RadDataFilter1.EditorInitialized, AddressOf EditorInitialized End Sub Private Sub EditorInitialized(sender As Object, e As Telerik.WinControls.UI.TreeNodeEditorInitializedEventArgs) Dim editor As TreeViewDropDownListEditor = TryCast(e.Editor, TreeViewDropDownListEditor) If editor IsNot Nothing Then Dim element As BaseDropDownListEditorElement = TryCast(editor.EditorElement, BaseDropDownListEditorElement) element.ListElement.SortStyle = Telerik.WinControls.Enumerations.SortStyle.Descending End If End Sub
Implement the SQL sentence "IN" with the control. In order to filter the registers that have a value into a column defined into a list of values: [column] IN ('value1', 'value2'.'value3')
The API should also provide functionality for setting a default operator to each of the descriptor items.
Add Item that has a DropDownListEditor for the value part. In addition, the value element should display the value from the DisplayMember.
Workaround: public RadForm1() { InitializeComponent(); this.radDataFilter1.NodeFormatting += radDataFilter1_NodeFormatting; this.radDataFilter1.Editing += radDataFilter1_Editing; } private void radDataFilter1_Editing(object sender, TreeNodeEditingEventArgs e) { e.Cancel = e.Editor is DataFilterCheckboxEditor; } private void radDataFilter1_NodeFormatting(object sender, TreeNodeFormattingEventArgs e) { DataFilterCriteriaElement nodeElement = e.NodeElement as DataFilterCriteriaElement; if (nodeElement != null) { nodeElement.ValueElement.DrawText = true; if (nodeElement.ValueElement.Children.Count == 0) { if (nodeElement.FieldElement.Text == "Discontinued") { RadCheckBoxElement checkBox = new RadCheckBoxElement(); nodeElement.ValueElement.Children.Add(checkBox); checkBox.Alignment = ContentAlignment.MiddleCenter; checkBox.CheckStateChanged += checkBox_CheckStateChanged; checkBox.StretchHorizontally = false; nodeElement.ValueElement.DrawText = false; } } else { RadCheckBoxElement checkBox = nodeElement.ValueElement.FindDescendant<RadCheckBoxElement>(); if (checkBox != null && nodeElement.FieldElement.Text != "Discontinued") { nodeElement.ValueElement.Children.Remove(checkBox); } else { nodeElement.ValueElement.DrawText = false; } } } } private void checkBox_CheckStateChanged(object sender, EventArgs e) { RadCheckBoxElement checkBox = sender as RadCheckBoxElement; DataFilterCriteriaElement criteriElement = checkBox.Parent.FindAncestor<DataFilterCriteriaElement>(); criteriElement.CriteriaNode.Descriptor.Value = checkBox.IsChecked; }
Please refer to the attached screenshot illustrating what filter expressions and groups are added. As a result, an incorrect RadDataFilter.Expression is produced. RadDataFilter either must always contain a valid expression or indicates somehow when the current expression is not valid.