0

いくつかのフィールド、日付、文字列などを含むフォーム (実際にはコンパクト フレームワーク) があります。両方の TextBox コントロールが BindindSource のプロパティにバインドされています。

BindindSource には DataSource プロパティとして DataSet があり、DataMember は SQL CE データベース内のテーブルです。

新しい行を追加したいときは、bindingSource.AddNew() を呼び出してから bindingSource.MoveLast() を呼び出します。フォームには (DataSet で定義された) デフォルト値が表示され、すべてのフィールドを編集できます。

フォームを保存するには、bindingSource.EndEdit() を呼び出し、TableAdapter メソッドを使用して DataSet 行の値をデータベースに挿入します。日付はデータベースに登録されますが、文字列は登録されません。代わりに、テキスト ボックスに入力した値ではなく、文字列の既定値が保存されます。

EndEdit() を呼び出した後に DataSet テーブルの行のデータを調べると、日付フィールドはフォームのデータで更新されますが、文字列は更新されません。

奇妙なことに、(AddNew を呼び出さずに) 同じフォームで既存の行を編集すると、文字列フィールドが更新され、問題なく保持されます。したがって、これは BindingSource で AddNew() を呼び出した後にのみ発生します。私は何が欠けていますか?どこから探し始めるべきですか?

残念ながら、ここに投稿するにはコードが多すぎます。

4

1 に答える 1

0

問題が見つかりました - TextBox の Tag プロパティと Text プロパティの両方について、BindingSource で誤って同じ列を選択してしまいました。何が起こったかは、テキストが最初に書き戻され、次にタグが書き戻され、タグが更新されなかったため、変更された値が上書きされたと思います。

于 2009-03-18T18:41:35.347 に答える