我有以下代码:
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
答案 0 :(得分:2)
这对我来说很奇怪:
.DisplayMember = "CATEGORIAS_AREA"
.ValueMember = "CATEGORIAS_AREA"
应该是这样的:
.DisplayMember = "CATEGORIA"
.ValueMember = "AREA"
获取或设置一个字符串,用于指定要从中检索字符串以在组合框中显示的属性或列。
编辑:您还需要替换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)