マスターTcxGridLevelと2つの子TcxGridLevels(すべてTcxGridDBTableViewを使用)で構成されるTcxGridがあります。マスターレベルのレコード値の値に応じて、子レベルの1つを非表示にします。どうすればこれを行うことができますか?
1 に答える
必要なものを説明するDevExpressへのリンクは次のとおりです。
https://www.devexpress.com/Support/Center/Question/Details/Q96738
しかし、これには私の意見ではいくつかの欠点があります。まず、データセットが大きいと非常に遅くなります。次に、マスターレベルが頻繁に変更され、グリッドを再描画する必要がある場合、「ちらつき」が発生します。nmasterが正しい条件を持っているときに詳細が「空」になるように、詳細データセットにフィルターを設定することは可能かもしれません。TcxGridには、空の詳細タブを自動的に非表示にするプロパティがあります。
やや文脈から外れていますが、リンクが再び停止した場合:
1)Level3 Viewが期待どおりに変更されなかったため、Level3OnGetGridViewをトリガーするにはどうすればよいですか。
OnGetGridViewイベントは、詳細が最初に展開されたときに1回だけ発生します。イベントハンドラーが実行された後、指定されたGridViewのクローンが作成されてキャッシュされるため、次回同じマスターレコードを展開するときにイベントが発生しません。後でイベントを発生させる必要がある場合は、マスターDataControllerのClearDetailsメソッドまたはClearDetailLinkObjectメソッドを呼び出すことにより、すべての詳細クローンをクリアできます。
この情報は、ExpressQuantumGridのドキュメントの「TcxGridLevel.OnGetGridView」トピックにあります。
2)表示されているすべてのグリッドビューのレベル2とレベル3のキャプションも変更していますが、変更は自動的には行われません。キャプションを変更するには、詳細ビューを閉じてから再度開く必要がある場合があります。
間違えない場合は、OnGetGridViewイベントハンドラーでレベルのキャプションを変更します。その場合、対応する要素のペイントが完了していないため、新しいキャプションはすぐには適用されません。回避策として、カスタムメッセージを投稿することで「遅延」操作を実行できます。このアプローチの実際を説明するために、サンプルプロジェクトを添付しました。うまくいけば、それはあなたのニーズに応え、それを適応させることは問題ではないでしょう。