使用MVC包装器,我尝试将默认过滤器从“等于”更改为“包含”。我找到了一些例子,但没有一个做我想做的事(或者我使用它们是错误的......)
好的,这是我的代码:
@(Html.Kendo().Grid<Portal2.Areas.Coord.Models.ViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.OperationKey).Hidden();
columns.Bound(c => c.Customer).Hidden();
columns.Bound(c => c.CarNumber).Filterable(ftb => ftb.UI("CarFilter"));
columns.Bound(c => c.DriverName).Filterable(ftb => ftb.UI("DriverFilter"));
columns.Bound(c => c.PhoneNumber).Filterable(ftb => ftb.UI("PhoneFilter"));
})
.Filterable(f => f.Extra(false))
.DataSource(dataSource => dataSource
.Ajax()
.Read(r => r
.Action("Read", "Operations2", new { startTime = (DateTime)ViewBag.startTime, endTime = (DateTime)ViewBag.endTime })
)
.PageSize(20)
.ServerOperation(false)
)
.HtmlAttributes(new { style = "height: 740px" })
.Scrollable()
.Groupable()
.Sortable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(10)
)
)
我有js函数:
function Filter(element, atr) {
var entityGrid = $(".k-grid").data("kendoGrid");
var data = entityGrid.dataSource.data();
var totalNumber = data.length;
var drivers = [];
for (var i = 0; i < totalNumber; i++) {
var currentDataItem = data[i][atr];
if ($.inArray(currentDataItem, drivers) == -1)
drivers.push(currentDataItem);
}
element.kendoAutoComplete({
dataSource: drivers
});
}
function CarFilter(element) {
Filter(element, "CarNumber")
}
function DriverFilter(element) {
Filter(element, "DriverName")
}
function PhoneFilter(element) {
Filter(element, "PhoneNumber")
他们将所有值都放在每个过滤器中的帮助文本框中。我试试这个:
columns.Bound(c => c.CarNumber)
.Filterable(ftb => ftb.UI("CarFilter"))
.Filterable(ftb => ftb.Cell(c => c.Operator("contains")));
但这只适用于.Filterable(f => f.Mode(GridFilterMode.Row))
.Filterable(filterable => filterable
.Extra(false)
.Operators(operators => operators
.ForString(str => str.Clear()
.StartsWith("Starts with")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
)
)
)
它没有提供预期的结果。
有关如何解决此问题的建议?
答案 0 :(得分:3)
Kendo Ui Grid Filterable。如何更改过滤器操作符?
...
尝试更改&#34;等于&#34;的默认过滤器to&#34;包含&#34;
...
但仅适用于.Filterable(f =&gt; f.Mode(GridFilterMode.Row))
那么,如何更改每列的过滤器运算符:
http://www.telerik.com/forums/grid-column-filter-default-method#mbwcoHyzT02G-SZmRs35YQ
columns.Bound(m => m.Field)
.Filterable(f =>
f.Operators(
o => o
.ForString(s =>
s.Clear()
.Contains("Contains")
.DoesNotContain("Does not contain")
.IsEqualTo("Is equal to")
.IsNotEqualTo("Is not equal to")
.StartsWith("Starts with")
.EndsWith("Ends with ")
)
))
重要的是使用s.Clear()
然后按照您想要的顺序添加所需的那些。
根据链接论坛,如果值全部匹配,则kendo采用默认值并且不会更改顺序 - 因此其中一个需要空格。