- PR -

[VS.NET2005][C#]DataSetをBindしたTextBoxの入力について

1
投稿者投稿内容
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2007-01-31 16:02
【環境】
OS:WindowsXPPro
VS:VS.NET2005
言語:C#
AP:Windowsアプリ

いつもお世話になっています。
さて、至極単純な話かもしれませんが、下記のような現象に頭を悩ませています。

Project内にDataSetを作成しており、このDataSetをFormに貼り付けています。
Formには、この他にTextBoxも貼り付けてあり、デザイナからプロパティの「DataBindings - (詳細)」から「フォーマットと詳細バインド」を呼出し、「バインド」にDataSetの中のカラムを、「データソース更新モード」に「OnValidation」を指定しています。

上記の状況で、DBから読込んだデータをDataSetにセットした際には、TextBoxに値は反映(表示)されるのですが、その後TextBoxに対して入力を行ってもDataSet側のRowStateは、何故かUnchangedのままでした。
※ちなみにクイックウォッチで確認した限りでは、DataSet内には入力した値は反映されていました。

データをバインドしたTextBoxに入力をした場合に、DataSet側のRowStateが「Modified」になる事を期待していたのですが・・・。
これって、こういうものなのでしょうか?
それとも、何か設定等が足りていませんか?

ご存知の方、是非ご教授願います。
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2007-02-01 16:53
自己レスです。

一応、解決しました。
ポイントは「DataSet.DataTable.DataRow.EndEdit()」でした。

クイックウォッチでDataRow[0][Column]の値を確認して、入力した値が反映されていたので、何故RowStateが変わらないのか疑問だったのですが、DataRow[0][Column, DataRowVersion.Original]の値も、DataRow[0][Column, DataRowVersion.Current]の値も、共に入力前の値だったので、試しにEndEdit()を発行してみたらRowStateがUnchangedからModifiedに変わってくれました。

ご報告までに・・・
1

スキルアップ/キャリアアップ(JOB@IT)