gpt4 book ai didi

.net - kendo ui 网格过滤器不区分大小写

转载 作者:行者123 更新时间:2023-12-04 21:50:16 25 4
gpt4 key购买 nike

我正在尝试为剑道网格启用不区分大小写的过滤(服务器端)。有谁知道将 tolower(toupper 等)注入(inject)过滤器以启用不区分大小写过滤的方法?

背景:

我放了一个剑道网格来使用来自 Controller 的数据(EntitySetController,.NET 4.5),一切似乎都运行良好。内联编辑、服务器分页、添加新行等。

为了启用不区分大小写的过滤,我只需构建过滤器,将过滤器文本和字段包裹在 tolower 中(推荐 here )。我还没有找到使用剑道元素自定义过滤器的方法。

Controller :

public class CategoriesController : EntitySetController<Category, int>
{
public override IQueryable<Category> Get()
{
return _repository.Find().OrderBy(c => c.Name);
}
}

数据源创建:
var serviceBaseUrl = "api/Categories",
dataSource = new kendo.data.DataSource({
type: "odata",
transport: {
read: {
url: serviceBaseUrl,
dataType: "json"
}
},
schema: {
// omitted for brevity
},
serverFiltering: true,
serverPaging: true,
pageSize: 10
});

网格创建:
$("#grid").kendoGrid({
dataSource: dataSource,
pageable: true,
filterable: {
extra: false,
operators: {
string: {
contains: "Contains",
}
}
},
columns: [
// omitted for brevity
]
});

最佳答案

基于完全没有回应,我猜很少有人遇到这个问题,也没有看到我最终想出的明显解决方案。以防万一其他可怜的灵魂像我一样被卡住,这就是我想出的。

数据源上的传输对象需要一个名为 parameterMap 的函数。在那里,执行以下操作:

parameterMap: function (data, type) {
if (type == "read") {
if (nameFilter) { // pull nameFilter from a viewmodel or wherever
data.filter = {
field: "tolower(Name)",
operator: "contains",
value: nameFilter.toLowerCase()
};
}

var newData = kendo.data.transports.odata.parameterMap(data);
delete newData.$format; // not currently supported by webapi.
return newData;
}
},

为了这个答案,我做了一些简化,所以如果这个例子被破坏了,我深表歉意。我尽我所能让它真正发挥作用。

关于.net - kendo ui 网格过滤器不区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18108585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com