从 Kendo 中的 columns.filterable.cell.template 函数访问列字段名称
Access the column field name from the columns.filterable.cell.template function in Kendo
因为我在整个网络应用程序中使用了很多 kendo 网格,所以我开始引入一些冗余代码,这给我带来了很多麻烦。想象一下有这样的东西:
//MVC:
...
columns.Bound(c => c.Column1).Filterable(f => f.Extra(false)
.Operators(o => o.ForString(str => str.Clear().Contains("Contains")))
.Cell(c => .ShowOperators(false).Template("column1Filter")))
.Title("Column One");
...
//JS:
function column1Filter(container) {
container.element.kendoAutoComplete({
filter: "contains",
dataTextField: "Column1",
dataValueField: "Column1",
valuePrimitive: true,
dataSource: container.dataSource
});
}
然后,为每个单独的网格中的每个单独的列复制此方法。有什么方法可以让我只有一种创建 kendo 自动完成的方法吗?例如:
function genericAutocompleteFilter(container) {
var columnsName = //...Meh!
container.element.kendoAutoComplete({
filter: "contains",
dataTextField: columnsName,
dataValueField: columnsName,
valuePrimitive: true,
dataSource: container.dataSource
});
}
我认为您可以使用闭包来获取您需要为您的 columnName 自定义的函数。类似于:
function getAutoCompleteFunction(columnName) {
return function (container) {
container.element.kendoAutoComplete({
filter: "contains",
autoBind: false,
dataTextField: columnName,
dataValueField: columnName,
valuePrimitive: true,
dataSource: container.dataSource
})
}
然后使用 getAutoCompleteFunction("column1") 作为例子。
最后,有两种方法可以做到。对于列 "color",我们可以将其与 kendo MVC (razor) 一起使用。而专栏"size",来自@massimo-franciosa 的建议。
因为我在整个网络应用程序中使用了很多 kendo 网格,所以我开始引入一些冗余代码,这给我带来了很多麻烦。想象一下有这样的东西:
//MVC:
...
columns.Bound(c => c.Column1).Filterable(f => f.Extra(false)
.Operators(o => o.ForString(str => str.Clear().Contains("Contains")))
.Cell(c => .ShowOperators(false).Template("column1Filter")))
.Title("Column One");
...
//JS:
function column1Filter(container) {
container.element.kendoAutoComplete({
filter: "contains",
dataTextField: "Column1",
dataValueField: "Column1",
valuePrimitive: true,
dataSource: container.dataSource
});
}
然后,为每个单独的网格中的每个单独的列复制此方法。有什么方法可以让我只有一种创建 kendo 自动完成的方法吗?例如:
function genericAutocompleteFilter(container) {
var columnsName = //...Meh!
container.element.kendoAutoComplete({
filter: "contains",
dataTextField: columnsName,
dataValueField: columnsName,
valuePrimitive: true,
dataSource: container.dataSource
});
}
我认为您可以使用闭包来获取您需要为您的 columnName 自定义的函数。类似于:
function getAutoCompleteFunction(columnName) {
return function (container) {
container.element.kendoAutoComplete({
filter: "contains",
autoBind: false,
dataTextField: columnName,
dataValueField: columnName,
valuePrimitive: true,
dataSource: container.dataSource
})
}
然后使用 getAutoCompleteFunction("column1") 作为例子。
最后,有两种方法可以做到。对于列 "color",我们可以将其与 kendo MVC (razor) 一起使用。而专栏"size",来自@massimo-franciosa 的建议。