Так это вроде старой должности, но я просто должен был работать по этому же вопросу и нашел время, пытаясь решить. Понял, что я отвечу на вопрос о потомстве.
Свойство «values», похоже, не работает 100% в сетке кендо в MVVM. Я работал над этим в двухэтапном процессе.
- Tack «this.viewModel» (где «viewModel» - это то, что вы вызываете вашу виртуальную машину) перед «loggerSeverityValues». При редактировании поля это даст вам раскрывающийся список.
- Используйте функциональность шаблона, чтобы отобразить правильное значение в сетке. Я использую небольшую функцию, чтобы сделать это проще:
getText: function (matchValue, valuesArray, text, value)
{
if (text === undefined)
{
text = 'text';
}
if (value === undefined)
{
value = 'value';
}
var retText = "No Value Found";
finalArr = $.grep(valuesArray, function (val, integer)
{
return val[value] == matchValue;
});
if (finalArr.length > 0)
{
retText = finalArr[0].text;
}
return retText;
}
Окончательный вид поля будет что-то вдоль линий этого:
{ field: 'severity', width: 270, values: this.viewModel.loggerSeverityValues, template: '#: getText(severity, this.viewModel.loggerSeverityValues) #' }
Обратите внимание, что с GetText() вы можете переопределить параметры текста и значения, если вам нужно.
В любом случае это сработало для меня. Вид обходного пути, но по состоянию на выпуск 2014.3.1411 в любом случае, похоже, что привязки MVKM кендо будут работать правильно с внешними ключами.
EDIT:
Для тех, кто в настоящее время с помощью кендо NG2 + компоненты, той же схеме, но с трубой преобразования работ.
Труба:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({ name: 'getText' })
export class GetTextPipe implements PipeTransform {
transform(value: any, idPropertyName: string, valuePropertyName: string, valueArray: any[]): any {
if (value != null && valueArray != undefined) {
let retIndex = valueArray.map(v => v[idPropertyName]).indexOf(value);
return valueArray[retIndex][valuePropertyName];
}
else {
return '';
}
}
}
Использование:
<kendo-grid-column field="severity" title="Severity" width="150px">
<template kendoGridCellTemplate let-dataItem="dataItem">
{{dataItem.severity | getText:'severity':'severityName':loggerSeverityValues}}
</template>
</kendo-grid-column>