It's now 2015. When are the new Filters going to be available and where can we vote on them? I've done very advanced filtering by using a custom filtering control (which works independently of the grid, so in theory it could be used to filter any data source, not just specifically the grid). We were also able to make it query child-data (using 'EXISTS' operator) when you wanted to query records from your data source that only had child data which matched certain conditions (ex. "Show me all Contacts who have Donated $100 or more in the last month" - a query which is absolutely impossible with Telerik's implementation).
It would be way to lengthy a post to show everything, but here are the Comparison Operators we use.
The enum:
/// <summary>
/// Enumeration of comparison operators
/// </summary>
[Flags]
public enum CompareOperators
{
#region Values
/// <summary />
Null = 0x0,
/// <summary />
NotNull = 0x1, // Combination of Not | Null (0x0 | 0x1)
/// <summary />
Exists = 0x2,
/// <summary />
NotExists = 0x3, // Not | Exists (0x1 | 0x2)
/// <summary />
Equal = 0x4,
/// <summary />
NotEqual = 0x5, // Not | Equal (0x4 | 0x1)
/// <summary />
GreaterThan = 0x8,
/// <summary />
NotGreaterThan = 0x9, // Not | GreaterThan (0x8 | 0x1)
/// <summary />
GreaterThanOrEqual = 0xC, // GreaterThan | Equal (0x8 | 0x4)
/// <summary />
NotGreaterThanOrEqual = 0xD, // Not | GreaterThan | Equal (0x8 | 0x4 | 0x1)
/// <summary />
LessThan = 0x10,
/// <summary />
NotLessThan = 0x11, // Not | LessThan (0x10 | 0x1)
/// <summary />
LessThanOrEqual = 0x14, // LessThan | Equal (0x10 | 0x4)
/// <summary />
NotLessThanOrEqual = 0x15, // Not | LessThan | Equal (0x10 | 0x4 | 0x1)
/// <summary />
Between = 0x20,
/// <summary />
NotBetween = 0x21, // Not | Between (0x20 | 0x1)
/// <summary />
In = 0x40,
/// <summary />
NotIn = 0x41, // Not | In (0x40 | 0x1)
// NOTE: A 'Like' operator is too simplistic (or complicated depending on how you look at it)
// So, it is broken down into it's component values: StartsWith, EndsWith, and Contains.
/// <summary />
StartsWith = 0x80,
/// <summary />
NotStartsWith = 0x81, // Not | StartsWith (0x80 | 0x1)
/// <summary />
EndsWith = 0x100,
/// <summary />
NotEndsWith = 0x101, // Not | EndsWith (0x100 | 0x1)
/// <summary />
Contains = 0x180, // StartsWith | EndsWith (0x80 | 0x100)
/// <summary />
NotContains = 0x181, // Not | StartsWith | EndsWith (0x80 | 0x100 | 0x1)
/// <summary />
Blank = 0x200,
/// <summary />
NotBlank = 0x201,
// String Functions
LengthEquals = 0x400,
LengthNotEquals = 0x401, // LengthEquals | NotNull (0x400 | 0x1)
LengthLessThan = 0x800,
LengthLessThanOrEqual = 0xC00, // LengthEquals | LengthLessThan (0x400 | 0x800)
LengthGreaterThan = 0x1000,
LengthGreaterThanOrEqual = 0x1400, // LengthEquals | LengthGreaterThan (0x400 | 0x1000)
LengthBetween = 0x2000,
#endregion
}