ComboBox没有填写代码

时间:2013-06-11 15:33:37

标签: vb.net

我有以下代码:

Using conn = New SqlConnection(connStr)
        Dim sql = "SELECT [CATEGORIA], [AREA] FROM [CATEGORIAS] WHERE ([AREA] = @AREA)"
        Dim sqlCmd = New SqlCommand(sql, conn)
        sqlCmd.Parameters.AddWithValue("@AREA", CStr(PublicLogin.Area))

        conn.Open()
        Dim ds As New DataSet
        Dim da As New SqlDataAdapter(sql, conn)
        da.Fill(ds, "CATEGORIAS")

        With cboCat
            .DataSource = ds.Tables("CATEGORIAS")
            .DisplayMember = "CATEGORIAS_AREA"
            .ValueMember = "CATEGORIAS_AREA"
            .SelectedIndex = 0
        End With

    End Using

理论上应该填充组合框吗?它没有。它没有给我任何错误或任何东西;组合框就在那里空着。我很确定查询运行良好并且它抓取了正确的信息但是Combobox没有填充。如果我将where查询删除,它将使用'System.Data.Row ...'

填充CB

更新:工作代码以防有人需要;

        Using conn = New SqlConnection(connStr)
        Dim sql = "SELECT [CATEGORIA], [AREA] FROM [CATEGORIAS] WHERE ([AREA] = @AREA)"
        Dim sqlCmd = New SqlCommand(sql, conn)
        sqlCmd.Parameters.AddWithValue("@AREA", CStr(PublicLogin.Area))

        conn.Open()
        Dim ds As New DataSet
        Dim da As New SqlDataAdapter(sqlCmd)
        da.Fill(ds, "CATEGORIAS")

        With cboCat
            .DataSource = ds.Tables("CATEGORIAS")
            .DisplayMember = "CATEGORIA"
            .ValueMember = "CATEGORIA"
            .SelectedIndex = 0
        End With

    End Using

2 个答案:

答案 0 :(得分:2)

这对我来说很奇怪:

.DisplayMember = "CATEGORIAS_AREA"
.ValueMember = "CATEGORIAS_AREA"

应该是这样的:

.DisplayMember = "CATEGORIA"
.ValueMember = "AREA"

来自MSDN on DisplayMember

  

获取或设置一个字符串,用于指定要从中检索字符串以在组合框中显示的属性或

编辑:您还需要替换this

Dim da As New SqlDataAdapter(sql, conn)

this

Dim da As New SqlDataAdapter(sqlCmd)

否则永远不会使用您的参数。

答案 1 :(得分:2)

它为空,因为查询可能不返回任何内容。请注意,您没有将参数添加到sql变量的最终查询中。

您使用查询和参数创建一个命令,但您从不使用它,因此当您选择所有值WHERE ([AREA] = @AREA)时,它不返回任何内容。

试试这个:

Dim da As New SqlDataAdapter(sqlCmd)