0

我正在尝试在 C# 中的 Janus 网格上实现 Collapse All/Expand ALL 按钮,但是当没有任何东西可以折叠时显示 Collapse ALL 是没有意义的!

所以我需要一种方法来找出某个级别的任何行是否未展开,以便我可以显示并启用“全部展开”按钮。

我希望有一种方法可以遍历所有行并验证是否未扩展某些随机子行。

谢谢!

4

1 回答 1

0

据我所知,没有这样的内置方法。如果不使用递归很重要,我的建议是使用RowCollapsedandRowExpanded事件与 aHashSet<GridEXRow>一起注册和取消注册展开/折叠的行。

public class ...
{
    ...
    HashSet<GridEXRow> expandedRows = new HashSet<GridEXRow>();

    public bool IsExpanded
    {
        get { return expandedRows.Count > 0; }
    }
    ...

    private void gridEX_RowCollapsed(object sender, Janus.Windows.GridEX.RowActionEventArgs e)
    {
        expandedRows.Remove(e.Row);
    }

    private void gridEXLocation_RowExpanded(object sender, Janus.Windows.GridEX.RowActionEventArgs e)
    {
        expandedRows.Add(e.Row);
    }
}

请注意,使用此方法可能会在您展开所有(添加到扩展行的所有行)并折叠时影响性能。Collapse all 将清除expandedRows,但是当折叠所有内容时,您仍然会RowCollapsed为每一行触发,例如没有这样的快捷方式,例如expandedRows.Clear();不先删除事件然后再将其放回。

于 2015-04-15T13:25:59.090 回答