After working with Telerik, I came to an answer. The thread that I opened can be found here , but I will also summarize in this answer.
The final solution was as follows:
- Use the "Messages" option of the "filter" column to customize the display of the filter display.
- Use the "Advanced" option of the "filter" column option to get an additional date selector in the filter menu.
- Set the "Operators" option in the grid filtering option to indicate which operators can be used for dates (gte, lte), and what text is displayed for each (start date, end date).
- Use the filterMenuInit event to configure filter controls.
Final result

Column filter
The following filtering options were used:
filterable: { "extra": "true", "messages": { "info": "Show items between dates:" }}
Additionally, it gives us a second date selector, and the message “info” sets up the text displayed at the top of the filter menu.
Filter Mesh
I used the "operator" option in the "filterable" parameter at the grid level to create date filters only for the gte and lte operators, as well as to adjust the text for these operators. This is what completes the statement configuration object:
"date": { "gte": "Begin Date", "lte": "End Date" }
Since we want this to apply to all dates, we put it in a factory and reuse it in every controller / view angular.
filterMenuInit Event
By providing a filterMenuInit event handler, you can retrieve and configure individual controls in the filter menu as you create it. The handler function I created looks like this:
function (e) { if (e.sender.dataSource.options.schema.model.fields[e.field].type == "date") { var beginOperator = e.container.find("[data-role=dropdownlist]:eq(0)").data("kendoDropDownList"); beginOperator.value("gte"); beginOperator.trigger("change"); beginOperator.readonly(); var logicOperator = e.container.find("[data-role=dropdownlist]:eq(1)").data("kendoDropDownList"); logicOperator.readonly(); var endOperator = e.container.find("[data-role=dropdownlist]:eq(2)").data("kendoDropDownList"); endOperator.value("lte"); endOperator.trigger("change"); beginOperator.readonly(); }
In particular, for any date field, this function sets the first and last drop-down operators to "gte" and "lte" with respect (these are drop-down lists for the date operator and date operator) and sets all the drop-down lists to be read-only, so the user does not can change them (the only other drop-down menu that is in index 1 is a logical comparison - only And it makes sense, so we do not allow users to change it.)
This function applies this configuration to any date type fields. I did it so that I could create this function once by placing it in an angular factory and then reusing it for any mesh I needed. If you do not want to apply this as a general configuration in all date columns, you can change the condition for checking fields by name. Example:
if (e.field == "fieldName")
Hope this will be helpful to someone else. This does not give you the final user interface settings in the filter menu, but it allows you to simply configure the filter between two dates. I'm sure someone smart could combine this with my original strategy (completely replacing the markup for the filter menu) to come up with something completely customized.