Получите доступ к имени поля столбца из функции columns.filterable.cell.template в 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
    });
}

Затем, воспроизвести этот метод для каждого отдельного столбца в каждой отдельной сетке. Есть ли способ, где я могу иметь только один метод, который создает автозаполнение кендо? НАПРИМЕР:

function genericAutocompleteFilter(container) {
    var columnsName = //...Meh!
    container.element.kendoAutoComplete({
        filter: "contains",
        dataTextField: columnsName,
        dataValueField: columnsName,
        valuePrimitive: true,
        dataSource: container.dataSource
    });
}

2 ответа

Решение

Я думаю, что вы можете использовать замыкание, чтобы настроить нужную вам функцию 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"), например.

В конце концов, есть два способа сделать это. Для столбца "цвет" мы можем использовать его с кендо MVC (бритва). Хотя столбец "размер", это по предложению @massimo-franciosa.

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

Другие вопросы по тегам