2016-04-08 8 views
0

Поскольку я использую множество сетей кендо, распространенных во всем веб-приложении, я начинаю вводить некоторый избыточный код, который вызывает у меня много неприятности. Представьте себе, что у вас есть что-то вроде:Доступ к имени поля столбца из функции 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 
    }); 
} 

Затем этот способ воспроизводится для каждого отдельного столбца в каждой отдельной сетке. Есть ли способ, когда я могу использовать только один метод, который создает автозаполнение kendo? E.G:

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

ответ

1

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

+0

Спасибо за помощь. однако мне нужно что-то, что я могу использовать, когда я вызываю эту функцию из бритвы –

0

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

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

Смежные вопросы