如何在ui-grid表中只扩展一行

时间:2015-11-15 11:42:23

标签: angularjs ng-grid angular-ui-grid

我在我的项目中使用ui-grid。

我在ui-grid中使用expandable功能。

我需要只扩展一行。

例如,如果我点击' +'在第5行上签名,然后点击' +'在第2行上签名,必须关闭第5行,并且必须扩展第2行。

任何想法如何在ui-grid中实现这种行为?

2 个答案:

答案 0 :(得分:2)

您应该使用可扩展功能中的以下API:

  • rowExpandedStateChanged

这是在更改扩展状态时引发的事件,可用于拦截扩展另一行的用户。

  • toggleRowExpansion(rowEntity)

这可以在接收事件时使用,以关闭任何其他扩展行。

在您的代码中,您应该在gridOptions.onRegisterApi

中添加此行
gridApi.expandable.on.rowExpandedStateChanged(scope,function(row){})

其中function是一个自定义函数,您可以在其中滚动网格中的所有行,通过选中row.isExpanded并关闭每个展开的行(但显然是用户刚展开的行)来检查它们是否已展开。

提醒一下,正如团队在网站上所说的那样,请注意可扩展功能仍处于alpha阶段。

答案 1 :(得分:1)

覆盖主要功能,使角度UI Grid Force在展开/折叠底部时一次只展开一行..

搜索" toggleRowExpansion"在ui-grid.js中然后:



toggleRowExpansion: function (rowEntity) {

// --------- COMMENT THIS LINES: ---------

// var row = grid.getRow(rowEntity);
// if (row !== null) {
// service.toggleRowExpansion(grid, row);
// }


// --------- ADD THIS LINES: ---------

var row = grid.getRow(rowEntity);
   if (row !== null) {
   var isRowExpanded = row.isExpanded || false;
   service.collapseAllRows(grid);
   if(!isRowExpanded) service.toggleRowExpansion(grid, row);
   }
}