私はDevExpressTcxGridを持っており、そのグリッドビューのOnEditValueChangedイベントにイベントハンドラーがアタッチされており、列の1つにいくつかのデータを要約することになっています。問題は、更新された値が基になるデータセットに書き込まれる前に、このイベントが検証中に発生することです。私はTcxGridにあまり精通していません。データセットが更新された後にイベントハンドラーを起動する方法があるかどうか誰かが知っていますか?
4 に答える
DataSource.OnDataChangeイベントを使用するのはどうですか?
これがまさに必要なものかどうかはわかりませんが、グリッドのImmediatePostオプションは、要約を更新する必要がある状況で非常に役立つことがわかりました。これは、cxViewのDataControllerプロパティに埋め込まれています。これにより、グリッドはスプレッドシートのように機能します。ユーザーがセルのEnterキーまたはTabキーを押すとすぐに、レコードが投稿されます。次に、データセットのAfterPostイベントから要約イベントを起動しますか?
(おそらくすでにこれを知っていますが、gridview自体には非常に便利な要約オプションが組み込まれています-列のSummaryプロパティを見て、ViewOptionsでShowFooterがtrueに設定されていることを確認してください-要約が比較的単純な合計または平均など、グリッドにすべてを実行させて、作業を節約します。)
cxGridでcxTableViewまたはcxDBTableViewを使用していますか
cxDBTableViewを使用する場合は、cxDBTableViewのプロパティのリンクされたデータソースのdatasource.onchangeにイベントを設定します。(cxDBTableView .datacontroller.datasource)
私はskamradtと一緒に行きます:あなたの期待に一致するイベントをもっと注意深く探してください。
それ以外の場合は、データが初期化されていることを確認した後でイベントをプラグインできます。
procedure TMyGrid.MyProc_OnDataLoaded( Sender : TObject ); //I made up this event, I'm not sure it exists
begin
Self.OnEditValueChanged := MyProc_OnEditValueChanged;
end;
これを通常の開発習慣として使用しないことを強くお勧めします(イベントセットをコードを介して別のコールバックにすることは、地獄をデバッグする確実な方法です)が、他の方法が本当に見つからない場合は...