kogrid中的主/细节功能

时间:2014-04-28 07:33:54

标签: javascript knockout.js kogrid

我想在kogrid中实现Master / Detail功能。因此,当我选择第一个网格表的任何字段时,所有其他细节将显示在下一个细节网格中。 任何人都可以提示如何实现这一点。

1 个答案:

答案 0 :(得分:1)

创建一个主/细节网格集,您需要使用ko.computed来选择/过滤细节。

您需要3个可观察数组和1个计算数据。

var model = {
  parent: ko.observableArray(),
  details: ko.observableArray(),
  selectedParents: ko.observableArray()
};

model.selectedDetails = ko.computed( function() {
  var selectedParent = this.selectedParents()[0];

  if ( !selectedParent ) {
    return [];
  }

  return this.details().filter( function(item) {
    // define filter comparison here
  } );
}, model );

在您的标记中,定义2个koGrids

<div data-bind="koGrid: { 
  data: parent, 
  multiSelect: false, 
  selectedItems: selectParents }"></div>

<div data-bind="koGrid: { data: selectedDetails } "></div>

koGrid将使用Zero或One项填充selectedItems observableArray。计算将对第二个网格绑定的子节点执行过滤。

我从breivity中省略了columnDef数据绑定部分。

如果您要为详细信息数组运行AJAX查询,则使用针对&#34; parent&#34;的订阅。 observable,将selectDetails更改为直接observableArray并在AJAX回调中设置其内容

有关基本示例,请参阅此jsFiddle