2009-03-18 13 views
0

私はいくつかのフィールド、日付、文字列などを含むフォーム(実際にはコンパクトフレームワーク)を持っています。両方のTextBoxコントロールは、BindindSourceのプロパティにバインドされています。フォームデータバインディング - データセットが更新されていませんか?

BindindSourceはDataSourceプロパティとしてDataSetを持ち、DataMemberはSQL CEデータベースのテーブルです。

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

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

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

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

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

答えて

0

私はこの問題を発見しました。私は、TextBoxのTagプロパティとTextプロパティの両方に対してBindingSourceで同じ列を誤って選択していました。私は、テキストが最初に書き戻され、タグが2番目に書き換えられ、タグが更新されなかったので、変更された値を上書きしたということが起こったと思います。

関連する問題