0

私はデータテーブルのイベントとRowChangingの違いを理解しようとしています。RowchangedMSDN ブログを確認しましたが、実質的な違いは見つかりませんでした。

これが私が得たものです:

  1. Both Use same Datarowchangeeventargs: 同じセットのイベント データがあります。すなわち; e.Actione.row

ウォッチ ウィンドウで、これらのイベント データに変更があるかどうかを確認しましたが、類似していました。Cancel が含まれていた場合RowChanging、それは検証を意味していたはずです。

全体として、2 つのイベントが同じ意味である場合、なぜこのイベントが発生するのか混乱しています。

私の混乱を解消してください。

これが、回答から得たポインターに基づいて見つけた私の違いです。

列にいくつかの行を追加し、両方のイベントを呼び出しました。e.Row が実際に提案された行であることに気付いたときに、変更イベントと変更イベントの両方で e.Row.RejectChanges() を実行しようとしました。そのため、Rejectchanges で「行変更イベント内で Canceledit() をキャンセルできません」というエラーが表示されました。しかし、RowChanged イベントで拒否が発生することを許可していました。次のシーケンスが発生しました: 1.RowChangingEvent e.Action=Added (複数の行をテーブルに追加していたため) e.Row.RowState=Detached. 2. RowChanged Event e.Action=Added e.Row.RowState=Added (ここで変更され、データテーブルに追加されたため、赤色で表示)

例外については、「行変更イベントで cAll CancelEdit() を実行できません」というメッセージが表示されました。

rowChanged イベントで、「この行はテーブルから削除されており、データがありません。BeginEdit() により、この行に新しいデータを作成できます。」

上記の行が変更されたイベント例外を案内してください。

4

3 に答える 3

1

MSDNによると:

DataTable.RowChangingDataRowaが変化するときにイベントが発生します。

その間

DataTable.RowChangedDataRowが正常に変更された後にイベントが発生します。

イベントの変更で例外をスローすると、変更を破棄できます。変更されたイベントを使用して他のテーブルを変更できますが、(簡単な方法で) 辞任することはできません。

はい、True両方に同じイベント データ、つまりe.Actionとが含まれていe.Rowます。しかし、どの時点でどの操作を実行するかがより重要です。

OnChangingデータがまだ検証されていないイベントを意味します。したがって、この段階でコードを変更すると、検証が失敗した場合にデータが保持されない可能性があります。イベント中はOnChanged、要件に応じてコードを変更できます。

于 2013-06-04T19:19:28.573 に答える
0

MSDNから:

RowChanging : DataColumn 値または DataTable の DataRow の RowState に対して変更が送信されたときに発生します。

RowChanged : DataColumn 値または DataTable 内の DataRow の RowState が正常に変更された後に発生します。このイベントでは、次に何をするかをアプリに伝えることができます..

(例はこちら)

于 2013-06-05T00:57:53.813 に答える