I add suport for GridFilters, if anyone is interested.
Markup
<ext:GridFilters runat="server" ParamPrefix="$filter">
<Filters>
<ext:NumericFilter DataIndex="Id" />
<ext:StringFilter DataIndex="Name" />
<ext:StringFilter DataIndex="Category" />
<ext:NumericFilter DataIndex="Price" />
</Filters>
<CustomConfig>
<ext:ConfigItem Name="buildQuery" Mode="Raw" Value="buildQueryOdata" />
</CustomConfig>
</ext:GridFilters>
And Javascript function:
//http://docs.sencha.com/ext-js/4-1/source/FiltersFeature.html#Ext-ux-grid-FiltersFeature-method-buildQuery
//http://www.odata.org/documentation/uri-conventions
function buildQueryOdata(filters) {
var p = {}, i, f, dataPrefix,
len = filters.length,
odata = "",
value;
for (i = 0; i < len; i++) {
f = filters[i];
if (odata != "") odata += " and ";
value = f.data.type == "string" ? "'" + f.data.value + "'" : f.data.value;
if (f.data.comparison != null) {
odata += f.field + " " + f.data.comparison + " " + value;
} else {
//substringof('Alfreds', CompanyName) eq true
odata += "substringof(" + value + "," + f.field + ") eq true";
}
}
var p = {};
if (odata != "") p[this.paramPrefix] = odata;
return p;
}