0

私は午前中ずっとこのサイトをグーグルで検索して調べましたが、うまくいくと思われるものは何も見つかりませんでした. データソース tblCardTypeDD から表示値を取得する form1 にコンボボックスがあります。その表示メンバーは sCardType であり、その値メンバーは iCardTypeID です。その選択されたメンバーは、tblInventory からの fkCardTypeID です。

ボタンをクリックすると、フォーム 2 がポップアップし、ドロップダウンで使用するカード タイプを追加できるシンプルなデータグリッド ビューが表示されます。現在、保存ボタンのクリック方法にコードを追加しようとしていますが、実際にコンボボックスを更新する組み合わせが見つかりません。

私は次のことを試しています:

frmInventory.SEquipTypeComboBox.DataSource = Nothing
frmInventory.SEquipTypeComboBox.DataSource = Me.EngDBbeDataSet.tblCardTypeDD

ただし、上記の実行後、ドロップダウンは空白になります。

どんな助けでも大歓迎です。

4

1 に答える 1

0

このページを確認してください。役立つかもしれません。

http://msdn.microsoft.com/en-us/library/w67sdsex.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

そうでない場合:

コンボボックスのデータソースバインディングを「リセット」する場所にブレークポイントを配置した場合、コンボボックスに表示したい新しい値がデータソースに含まれているかどうかを確認してください。ばかげているように聞こえるかもしれませんが、よくある間違いです。この場合、バインディングに問題がないことがわかります。

また、データソースを何もせずにデータソースを再度追加した後、次のように、どの列が表示メンバーになるかを再度指定する必要があります。

ComboBox1.DisplayMember = "Column1"

ただし、私が言ったサイトを見ると、データソースを削除して再度追加するのではなく、バインドを一時停止して再開する方法を説明するメモを確認する必要があります。

ただし、データテーブルを使用している場合、値は自動的に変更されるはずであり、コンボボックスをドロップして再バインドする理由はありません。

--

再バインドする必要がないことを証明するために、それを証明するために非常に汚いコードをすぐに作成しました。

form1 には、データテーブルにバインドされたコンボボックスがあり、form2 という名前の 2 番目のフォームを呼び出すボタンもあります。

form2 には、Datatable に 2 行を追加してから最初の画面に戻るボタンがあります。

コード形式 1:

Public Class Form1

    Private dataSet As New DataSet("DataSet1")
    Private dataTable As DataTable = dataSet.Tables.Add("DataTable1")

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        dataTable.Columns.Add("Column1")

        Dim row1 As DataRow = dataTable.NewRow()
        row1("Column1") = "Data1"
        dataTable.Rows.Add(row1)
        Dim row2 As DataRow = dataTable.NewRow()
        row2("Column1") = "Data2"
        dataTable.Rows.Add(row2)


        ComboBox1.DataSource = dataTable
        ComboBox1.DisplayMember = "Column1"
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim form2 As New Form2(dataTable)
        form2.Show()
    End Sub

End Class

コード形式 2:

Public Class Form2

    Private _dataTable As DataTable

    Public Sub New(ByVal dataTable As DataTable)
        InitializeComponent()
        _dataTable = dataTable
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        Dim row3 As DataRow = _dataTable.NewRow()
        row3("Column1") = "Data3"
        _dataTable.Rows.Add(row3)
        Dim row4 As DataRow = _dataTable.NewRow()
        row4("Column1") = "Data4"
        _dataTable.Rows.Add(row4)
        Me.Close()
    End Sub
End Class
于 2012-11-14T21:45:45.990 に答える