Я немного запутался, как связать ответ в моей сетке кендо.
Получение службы формы ответа, как показано ниже
Мне нужно показать ответ в Grid, как показано ниже
Я использую угловые js, MVC и kendo для Grids.
который лучше всего изменить мои данные ответа в Grid. В MVC или Angular js.
спасибо заранее
Я думаю, вы не можете сделать это в сетке. Но вы можете использовать обходной путь - изменить данные для представления необходимого вида.
Я изменил некоторые скрипты здесь: http://jsfiddle.net/SugMK/47/
Сначала вы должны сгруппировать свои данные, в вашем примере uid
определяет id
и title
, поэтому вы можете сгруппировать его по uid
:
var result = _.groupBy(result, (item) => { return item.uid });
Второй Iterate в приведенном объекте, который имеет структуру типа
{
uid1: [
{row1_with_uid1},
{row2_with_uid1}
],
uid2: [
{row1_with_uid2},
{row2_with_uid2}
]
}
И совокупность (или нет) необходимых строк с вашей пользовательской логикой. В вашем случае вы должны комбинировать два поля code
как текст с br
как разделитель:
_.forEach(result, (items) => {
var newItem = items[0]; // set default.
items.splice(0, 1); // since first item is default - remove it from aggregate array
_.forEach(items, (item) => { newItem.code = newItem.code + "<br />" + item.code; }); // aggregate item.
newResult.push(newItem); // save aggregated item.
});
Третий Вы должны установить encoded
параметр агрегированного поля (кода) в false
, для представления вашего br
как HTML, а не текста:
{ field: "code", title: "multiline", encoded: false }
PS Я думаю, что вы можете создать свою собственную намного лучшую реализацию, но я создаю этот пример, чтобы лучше понять мою идею.
Если вы предпочитаете, чтобы источник данных сетки обрабатывал группировку данных и агрегацию, просто используйте источник данных сетки. Ниже приведен код синтаксиса бритвы, однако в Kendo ui js имеется прямой эквивалент.
DataSource(dataSource => dataSource
.Server()
.Aggregates(aggregates =>
{
aggregates.Add(p => p.Amount).Sum();
})
.Group(groups => groups.Add(p => p.CustomerName)
)