kendo ui - функция шаблона столбца данных не определена в сетке
У меня есть 2 файла: customer.js
а также add-customer-template.html
, Есть сетка на add-customer-template.html
как указано ниже.
<div id="leadsGrid" data-role="grid"
data-bind="source: leadsDS"
date-scrollable="true"
data-editable="popup"
data-toolbar="['create']"
data-columns='[
{
field: "salesPerson", title: "Sales Person",
editor: "salesPersonDropDownEditor",
template: "#= getSalesPersonName(salesPerson)#"
},
{field: "date", title: "Date", format: "{0:MM-dd-yyyy}"},
{field: "expectedDate", title: "Expected Date", format: "{0:MM-dd-yyyy}"},
{field: "expectedIncome", title: "Expected Income", format: "{0:c}"},
{field: "details", title: "Details"},
{field: "description", title: "Description"},
{command: ["edit", "destroy"], title: " "}]'>
</div>
А также customer.js
имеет 2 функции salesPersonDropDownEditor
а также getSalesPersonName
как ниже.
var salesPersonDropDownEditor = function(container, options) {
$('<input data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
dataTextField: "salesPersonName",
dataValueField: "salesPersonID",
dataSource: new kendo.data.DataSource({
transport: {
read: {
url: "../public/js/salesPersons.json",
dataType: "json"
}
}
})
});
}
var getSalesPersonName= function(salesPersonID) {
for (var idx = 0, length = customerAdd.salesPersonData.length; idx < length; idx++) {
if (customerAdd.salesPersonData[idx].CategoryID === customerAdd.salesPersonData.salesPersonID) {
return customerAdd.salesPersonData[idx].salesPersonName;
}
}
}
Я хочу отобразить раскрывающийся список в столбце sales person
но я получаю ошибку salesPersonDropDownEditor
не определено. Когда я добавил "" вокруг salesPersonDropDownEditor
это не выдает ошибку. Теперь это ошибка getSalesPersonName
не определено.
Как мне вызвать эти функции и отобразить раскрывающийся список при редактировании из сетки???
1 ответ
Это один из недостатков, связанных с использованием декларативной инициализации (т.е. с использованием data-
атрибуты для настройки сетки). Вам нужно будет настроить сетку в customer.js
файл, так что он находится в той же области, что и ваши функции.
надстройку клиент-template.html
<div id="leadsGrid"></div>
customer.js
$('#leadsGrid').kendoGrid({
dataSource: leadsDS,
scrollable: true,
editable: 'popup',
toolbar: ['create'],
columns: [
{
field: 'salesPerson',
title: 'Sales Person',
editor: salesPersonDropDownEditor,
template: getSalesPersonName
},
// shortened for brevity
]
});
var salesPersonDropDownEditor = function(container, options) {
// hidden for brevity
};
var getSalesPersonName = function() {
// hidden for brevity
};