2016-09-22 89 views
0

我有点混淆了如何绑定我的剑道网格中的响应。将Json响应绑定到Kendo网格

获取响应形式的服务象下面

enter image description here

我需要显示在网格的响应如下所示

enter image description here

我使用角JS,MVC和剑术为网格。

这是最好的修改我在网格中的响应数据。在MVC或Angular js中。

感谢提前

+0

剑道网格具有按键组合行的功能。你可以试试。 – Nilesh

回答

0

我认为你不能在网格中原生。但是,您可以使用解决方法 - 更改您的数据以表示必要的视图。

我修改别人的小提琴这里:http://jsfiddle.net/SugMK/47/

首先你必须组合你的数据,你比如uid决定idtitle,所以您可以将它放在uid

var result = _.groupBy(result, (item) => { return item.uid }); 

迭代结果对象,其结构像

{ 
    uid1: [ 
      {row1_with_uid1}, 
      {row2_with_uid1} 
      ], 
    uid2: [ 
      {row1_with_uid2}, 
      {row2_with_uid2} 
      ] 
} 

并聚集(或不)必要的行与你自定义的逻辑。在你的情况,你必须用br结合两个code领域的文本作为分隔符:

_.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我认为你可以创建自己更好的实现,但是我创建了这个例子来更好地理解我的想法。

0

如果您希望让网格的数据源处理数据分组和聚合,那么只需使用网格的数据源即可。下面的代码是razor语法,但是,在Kendo ui js中有一个直接的等价物。

DataSource(dataSource => dataSource 
    .Server() 
    .Aggregates(aggregates => 
    { 
     aggregates.Add(p => p.Amount).Sum(); 
    }) 
    .Group(groups => groups.Add(p => p.CustomerName) 
)