0

C# の Janus Grid に [すべて折りたたむ] / [すべて展開する] ボタンを実装しようとしていますが、折りたたむものが何もないときに [すべて折りたたむ] を表示しても意味がありません!

そのため、すべて展開ボタンを表示して有効にできるように、展開されていないレベルの行があるかどうかを確認する方法が必要です。

すべての行を繰り返し処理し、ランダムな子行が展開されていないかどうかを確認する他の方法を望んでいます。

ありがとうございました!

4

1 に答える 1

0

私の知る限り、そのような組み込みメソッドはありません。再帰を使用しないことが重要である場合の私の提案は、展開/折りたたまれた行を登録および登録解除するために、RowCollapsedおよびRowExpandedイベントと組み合わせて使用​​することです。HashSet<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);
    }
}

このメソッドを使用すると、すべてを展開 (expandedRows に追加されたすべての行) して折りたたむときに、パフォーマンスが低下する可能性があることに注意してください。すべてを折りたたむと、expandedRows がクリアされますが、すべてを折りたたむと、RowCollapsed各行に対して引き続きトリガーされます。たとえばexpandedRows.Clear();、最初にイベントを削除してから元に戻すことなく実行するようなショートカットはありません。

于 2015-04-15T13:25:59.090 に答える