2016-05-06 12 views
0

これは単純なはずですが動作しません。私はテーブル・アダプターとバインディング・ソースを介してデータベースによって取り込まれているコントロールを持つ単純なフォームです。 Form_Loadイベントのコードは次のとおりです。ユーザーがコントロールを更新するときにバインディングソースが更新されない(VB.NET Winforms)

Me.DS_Phantom_Location_taLocation1.Fill(Me.DS_Phantom_Location1.dtLocation, CType(resultnum, Integer)) 
    bsLocation.DataSource = Me.DS_Phantom_Location1.dtLocation 

この部分は正常に動作し、コントロールはデータベース内のデータで更新されます。

ユーザーが[OK]ボタンをクリックすると、データベースは更新されるはずですが、それは起こっていません。

コードはここにある:

Me.bsLocation.EndEdit() 
Me.DS_Phantom_Location_taLocation1.Update(DS_Phantom_Location1.dtLocation) 

私は、DataRowを基礎となるのBindingSourceがされていないことを更新見てから知っている - これはbtnok_clickイベント内でも次のとおりです。

Dim drv As DataRowView = TryCast(Me.bsLocation.Current, DataRowView) 
    Dim dr As DataRow = drv.Row 
    s = dr("INSTITUTION_DOSE").ToString 

sがまだありますデータベースからの古い値。

bsLocationが更新されないようです。私は、コントロールのcausevalidation = trueとコントロールがデータバインドされていることを確認しました。

この時点で、私はバインディングソースのアイデアを破棄してテーブルアダプタを使用して直接更新する以外に何をすべきか分かりません。私はこの作品を知っていますが、理想的ではありません。 (私のプロジェクトが持っている)。どんな助けやアイデアも素晴らしいでしょう。 Ty

答えて

0

この後、データセットに戻ってトラブルシューティングを行いました。データを生成するために使用したSQLには、多くのTRIM()関数があり、列エイリアシングが乱され、ほとんどの列読取り専用に設定されていて、表アダプターからのUPDATEコメントには実際にはわずかなデータベース列しかありませんでした。そのため、TRIM()関数を削除してコマンドを再構築したところ、正しく更新されました。

関連する問題