2012-02-29 12 views
0

リストボックス(名前はVenueList)を含むウィンドウフォームを作成しました。リストボックスは、バインディングソースVenuesBindingSourceによって提供されるリストからその値を引っ張っています。これは値のIDとテキストの名前を取得しています。ダイアログボックスの結果で別のフォームのコントロールを更新する

新しい会場のデータベースに保存する値を求めるDialogBoxが表示されているボタンがあります。値を入力してデータベースを挿入すると、ダイアログボックスが閉じられ、元のフォームに戻ります。

ただし、リストを更新する代わりに、リストは同じままです。しかし、フォームを閉じてそれを再び開くと、新しい値が追加されたことがわかります。上記のコードで

TournamentSettings.VenuesTableAdapter.InsertVenueQuery(Trim(VenueNameTxt.Text), Trim(VenueAddress1Txt.Text), Trim(VenueAddress2Txt.Text), Trim(VenueCityTxt.Text), Trim(VenueProvinceTxt.Text), Trim(VenueZipTxt.Text), Trim(CountryBox.SelectedValue), Trim(VenuePhoneNo.Text), VenueType.SelectedText, VenueWebAddress) 
    TournamentSettings.VenuesTableAdapter.Fill(TournamentSettings.VenueNameList.Venues) 
  • InsertVenueQuery負荷のコンボボックスを埋めるために使用されるTableAdapterのVenuesTableAdapterに値を追加するために呼び出される設計者からのクエリの名前です。また、Fillコマンドを送信して、新しい値でテーブルを補充しました。

テーブルアダプターを供給してデータテーブルにfillコマンドを送信するのではなく、別の方法をとるべきですか?それとも私がここでやっていないことがあり、その価値をリストに強制すべきです。私はデザイナーの外にあるものすべてをやり直そうと思っていますが、基本的に2つのコマンド(データを挿入するコマンドとアクセスデータベース上で実行される@@ IDENTITY値を取得するコマンド)を実行する必要があるため、 )

+0

Windowsフォーム、Webフォーム、WPFなどですか? –

+0

これはWindowsフォームです。 (私はすでにその質問に投稿したと思う)。 –

答えて

0

いいえ。これは私が一瞬考えなければならなかったものです。

loadイベントでブロックされたブロックを作成するのではなく、代わりに "FillVenueList"というサブ関数を作成しました。

私は、次のコードブロックを使用:私はフォームと追加会場ウィンドウの両方にこのサブと呼ばれ、私は安全にこれが動作することを確認することができ、そこから

Public Sub FillVenueList() 
    ' Adding values from database to a datatable. 
    ' From there will add to the list box. 
    Dim VenueConnection As New OleDb.OleDbConnection(DBconnection) 
    VenueConnection.Open() 
    Dim VenueConnectionQuery As New OleDb.OleDbCommand("SELECT VenueID, VenueName FROM Venues", VenueConnection) 
    Dim VenueDataAdapter As New OleDb.OleDbDataAdapter(VenueConnectionQuery) 
    Dim VenueDataSet As New DataSet 
    VenueDataAdapter.Fill(VenueDataSet, "Venues") 

    TrnVenueLst.DataSource = VenueDataSet.Tables("Venues") 
    TrnVenueLst.DisplayMember = "VenueName" 
    TrnVenueLst.ValueMember = "VenueID" 
    VenueConnection.Close() 
End Sub 

を。フォーム上で新しい値を取得する方法です。ロードイベントの一部として使用するのではなく、ロードイベントブロックから呼び出してから、リストに追加するときに呼び出します。

関連する問題