我正在尝试在 C# 中的 Janus 网格上实现 Collapse All/Expand ALL 按钮,但是当没有任何东西可以折叠时显示 Collapse ALL 是没有意义的!
所以我需要一种方法来找出某个级别的任何行是否未展开,以便我可以显示并启用“全部展开”按钮。
我希望有一种方法可以遍历所有行并验证是否未扩展某些随机子行。
谢谢!
据我所知,没有这样的内置方法。如果不使用递归很重要,我的建议是使用RowCollapsed
andRowExpanded
事件与 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();
不先删除事件然后再将其放回。