如何从wijmo-flex网格的树视图中的节点转到父节点

How to go to a parent node from a node in a treeview of wijmo flex grid

本文关键字:节点 父节点 视图 wijmo-flex 网格      更新时间:2023-09-26

我正在使用wijmo-flex网格为我的数据创建一个树视图,我可以找到特定节点是否有子节点以及节点的级别,但我无法从给定节点转到父节点。同时检索每一行的索引。

对这个话题的任何见解都会非常有帮助。

$scope.selectionChanged = function(sender,args){
       var index = sender.selection.row;
        var temp;
        console.log(index);
        temp = sender._rows[index]._data;
        console.log(temp.reports);
    }; 

FlexGrid行有两种风格:常规行(行对象)和节点(GroupRow对象)。常规行没有"级别",但GroupRow对象有一个"级别"属性,可以用来获取节点的级别。

要获取行的父节点,您应该扫描网格的行集合,直到找到一个"级别"比您开始使用的节点小的节点。

这是一把小提琴演示:

http://jsfiddle.net/Wijmo5/8n2yde6f/

查看"getParentNode"方法的实现,这应该是您想要的:

// gets the parent row for a given FlexGrid row.
// returns the parent row or null if original row doesn't have a parent.
function getParentNode(row) {
  // get row level
  var startLevel = row instanceof(wijmo.grid.GroupRow) ? row.level : -1;
  var startIndex = row.index;
  // travel up to find parent node
  for (var i = startIndex - 1; i >= 0; i--) {
    var thisRow = row.grid.rows[i],
        thisLevel = thisRow instanceof(wijmo.grid.GroupRow) ? thisRow.level : -1;
    if (thisLevel > -1) {
      if (startLevel == -1 || (startLevel > -1 && thisLevel < startLevel)) {
        return thisRow;
      }
    }
  }
  // not found
  return null;
};

希望这是有用的。

您要做的是访问所选行的dataItem,并使用您设置的FlexGrid的childItemPath查看它是否包含子项。

以下是一个工作示例:http://jsfiddle.net/banzor/700e6bn2/1/

这是我选择Changed事件的代码。

$scope.selectionChanged = function(sender, args){
    var index = args.row;
    var row = args.panel.rows[index].dataItem;
    var childPath = sender.childItemsPath;
    var children = row[childPath];
    if (children && wijmo.isArray(children)) {
        console.log("Has items: " + children.length);
    }
};