如果您只有一個選項,或者對佈局不滿意,可以使用Kendo更高版本中存在的「ui:func(element){}」重載來完全自定義過濾器控件(例如v2013.1.319)
columns : [
{ field: "MyCity", width: 80, title : "City", filterable: customTextFilter },
{ field: "CreatedAt", width: 72, title: "Created", filterable: $scope.customDateFilter }
]
下面是然後定製外觀的功能:
var customTextFilter =
{
extra : false,
operators : { string : { contains : "Contains"}},
ui : function(element)
{
var parent = element.parent();
while(parent.children().length > 1)
$(parent.children()[0]).remove();
parent.prepend("<input data-bind=\"value:filters[0].value\" class=\"k-textbox\" type=\"text\">");
}
}
在這裏是具有GTE/LTE格式兩個日期框的一個示例:
var customDateFilter =
{
extra : true,
operators : { },
ui : function(element)
{
var parent = element.parent();
while(parent.children().length > 1)
$(parent.children()[0]).remove();
parent.prepend(
"On or after:<br/><span class=\"k-widget k-datepicker k-header\">" +
"<span class=\"k-picker-wrap k-state-default\">" +
"<input data-bind=\"value:filters[0].value\" class=\"k-input\" type=\"text\" data-role=\"datepicker\"" +
" style=\"width: 100%\" role=\"textbox\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-disabled=\"false\" " +
" aria-readonly=\"false\" aria-label=\"Choose a date\">" +
"<span unselectable=\"on\" class=\"k-select\" role=\"button\">" +
"<span unselectable=\"on\" class=\"k-icon k-i-calendar\">select</span></span></span></span>" +
"<br/>On or before:<br/>" +
"<span class=\"k-widget k-datepicker k-header\"><span class=\"k-picker-wrap k-state-default\">" +
"<input data-bind=\"value: filters[1].value\" class=\"k-input\" type=\"text\" data-role=\"datepicker\"" +
" style=\"width: 100%\" role=\"textbox\" aria-haspopup=\"true\" aria-expanded=\"false\" " +
" aria-disabled=\"false\" aria-readonly=\"false\" aria-label=\"Choose a date\">" +
"<span unselectable=\"on\" class=\"k-select\" role=\"button\">" +
"<span unselectable=\"on\" class=\"k-icon k-i-calendar\">select</span></span></span></span>"
);
}
};
顯然你可以模板出來,不管你喜歡什麼,併爲Date,Boolean等創建不同的自定義過濾器 - 注意,對於上面的Date版本,如果你想正確設置操作符爲「gte」和「lte」過濾[0] .operator和過濾器[1] .operator你可以只設置在dataSource.filter屬性,像這樣:
dataSource: {
transport :
{
read : function(context)
{
//note that here context.filter.filters has the array
//of applied filters -- you can write a custom RESTful call
//such as angular $http.get() or use Kendo native format to
//send filter options to server.
}
},
//filter settings here initialize filter[0], filter[1], etc.
filter : [
{ field : "CreatedAt", operator : "gte" },
{ field : "CreatedAt", operator : "lte" }]
}
嘗試更新到最新的內部版本,這是固定的據我記憶。 –
@Pechka That works - 如果你把這個作爲答案,我會把它標記爲接受的答案。參考v2012.3.1114(這是十一月的發佈)不起作用。該錯誤已由v2012.3.1304修復,並根據將於2013年2月完全發佈的其他搜索進行修復。 –
感謝您提供其他信息,我發佈了一個可幫助其他用戶的答案。 –