从Kendo中的columns.filterable.cell.template函数访问列字段名

Access the column field name from the columns.filterable.cell.template function in Kendo

本文关键字:访问 函数 字段 template cell Kendo 中的 columns filterable      更新时间:2024-03-16

因为我在整个web应用程序中使用了很多剑道网格,所以我开始引入一些冗余代码,这给我带来了很多麻烦。想象一下有这样的东西:

//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
    });
}

然后,为每个网格中的每个单列复制此方法。有没有什么方法可以让我只有一个方法来创建剑道自动完成?E.G:

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(剃刀)一起使用。而专栏"大小",它来自@massimofranciosa的建议。

http://dojo.telerik.com/uqita/5.