0

こんにちは、バインディング ソースから適切に取り込まれたコンボボックスがあります。したがって、問題は、データグリッドの「名前」の列に、入力されたドロップダウンリストからの値のみが表示されることです。ドロップリストと同じでない値は空で表示されます。誰かが理由を教えてもらえますか? 以下は、コンボボックスのコードです。私は印刷できませんが、説明は次のようになります。リストには John 、 Jake 、 Jay の 3 つの名前がありますが、列にはそれぞれのセルに 10 を超える name があります。オンロード時の問題は、他の名前を表示していません。

    Dim c4 As New DataGridViewComboBoxColumn()

    c4.HeaderText = "Name"
    c4.Name = "Name"
    c4.DataPropertyName = "Name"
    c4.DisplayMember = "NamesWithJ"
    c4.ValueMember = "NamesWithJ"
    c4.DisplayStyleForCurrentCellOnly = False
    c4.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
    c4.FlatStyle = FlatStyle.Standard
    c4.SortMode = DataGridViewColumnSortMode.Automatic
    c4.DataSource = AddtBndSrc
    c4.Width = 100
    Me.DataGrid.Columns.Add(c4)

そして、これがバインディングソースを作成して値を入力するコードです。接続は完全に表示され、エラーはありません。一部の行でコンボボックス列がnullを表示しているだけです

                   Try

       con = New SqlConnection(strConnection)

      cib.Open()

        adoAAda = New SqlDataAdapter(StrAddNameQuery, con)

        adoAddtRs = New DataSet



        adoAAda.Fill(adoAddtRs)

        Dim tableAddt As DataTable = adoAddtRs.Tables(0)

        Dim colum As DataColumn = tableAddt.Columns(0)


        tableAddt.PrimaryKey = New DataColumn() {tableAddt.Columns(0)}

        AddtBndSrc.DataSource = adoAddtRs.Tables(0)


        con.close()

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    Try
        ' connection procedure
     con = New SqlConnection(strConnection)

       con.Open()

        adoPAda = New SqlDataAdapter(StrProductQuery, con)

        adoProductsRS = New DataSet



        adoPAda.Fill(adoProductsRS)

        Dim tableProduct As DataTable = adoProductsRS.Tables(0)

        Dim colum As DataColumn = tableProduct.Columns(0)


        tableProduct.PrimaryKey = New DataColumn() {tableProduct.Columns(0)}

        productBndSrc.DataSource = adoProductsRS.Tables(0)

        MsgBox(tableProduct.Columns(0).ColumnName.ToString)
       con.close

        datagridview.Datasource = productBndSrc

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
4

2 に答える 2

0

コンボボックス bindingSourceAddtBndSrcDataGridViewComboBoxColumnデータソースに割り当てているようです。したがって、その列にいくつかのアイテムが割り当てられている場合、それらはデータソースによって上書きされます。

于 2013-06-21T08:21:15.510 に答える
0

コンボボックスの値をマージしたい。一部はコンボにハードコードされていますが、データベースから取得されています。その場合、コンボにバインドする前に、ハードコードされた値をデータソースに追加する必要があります。

次の行の後に、以下のコードを追加します。

    adoAAda.Fill(adoAddtRs)
    Dim tableAddt As DataTable = adoAddtRs.Tables(0)

'バインドする前に、ハードコードされた名前をデータソースに追加します

    Dim tableAddt As DataTable = adoAddtRs.Tables(0)

    Dim dr As DataRow = tableAddt.NewRow
    dr("NamesWithJ") = "My test 1"
    tableAddt.Rows.Add(dr)
    Dim dr1 As DataRow = tableAddt.NewRow
    dr("NamesWithJ") = "My test 2"
    tableAddt.Rows.Add(dr1)
于 2013-06-21T09:25:44.413 に答える