1

我正在构建一个包含购物等物品的应用程序,用户(在登录并选择“浏览类别”后)然后可以看到一个列表框和按钮(以及一个返回按钮)。列表框具有类别名称,并且对于每个类别,都有一个表格保存该类别下项目的数据。该列表框具有到 SQL Server 的数据绑定,其中选定的索引是表“tblNamesOfCats”。它下方的按钮显示“选择类别”。用户应该选择一个类别,然后单击按钮以查看该类别的表单。但是,我尝试了以下代码 -

Private Sub btnSelectCat_Click(sender As Object, e As EventArgs) Handles btnSelectCat.Click

    If lbxCatList.SelectedItem = ("Action Figures") Then
        frmCatsActionFigures.Show()
    End If

End Sub

注意-btnSelectCat 是按钮,lbxCatList 是列表框,frmCatsActionFigures 是 Action Figures 类别的表单。

但是,当我尝试调试它时,我最终得到了这个错误 -

Overload resolution failed because no Public '=' can be called with these arguments:

'Public Shared Operator =(a As String, b As String) As Boolean':

    Argument matching parameter 'a' cannot convert from 'DataRowView' to 'String'.

我应该使用什么代码?我将如何解决这个问题?

UPDATE(1)- 如前所述,列表框由一个 SQL Server 表填充,该表只有一列,称为“类别名称”,行中只包含每个类别的名称。这是一些错误的截图(显然你必须点击链接,因为我没有足够高的声誉来发布图片) -

https://sites.google.com/a/devincave.com/temporaryimagesite/

4

2 回答 2

0
Private Sub btnSelectCat_Click(sender As Object, e As EventArgs) Handles btnSelectCat.Click

    If lbxCatList.SelectedItem.ToString() = "Action Figures" Then
        frmCatsActionFigures.Show()
    End If

End Sub
于 2013-10-13T17:46:06.993 回答
0

当您将数据库表绑定到列表框时,数据行视图(数据源)中的行将存储在列表框中,而不是这些行中的列中的数据。所以它不是文本。但 DRV 对象。在错误消息中:

Argument matching parameter 'a' cannot convert from 'DataRowView' to 'String'

“动作人物”是“字符串”部分,SelectedItem 是 DRV 对象行,因此您必须这样对待它。

  ' works for ONE col views or when the column you want is #0 
  ' else use the right index
   If lbxCatList.SelectedItem.Item(0).ToString = "Action Figures" Then

或者

   If lbxCatList.SelectedItem.Item("Category").ToString = "Action Figures" Then

或将其转换回 drv 行(上面基本上是这个的简写):

   Dim drv As DataRowView = lbxCatList.SelectedItem

   If drv.Item("Category").ToString                  ' or use index of 0

使用后一个版本,您可以在此处设置一个中断并将鼠标悬停在drv上面以查看所有属性和值,以了解您想要的位置以及如何获取它

于 2013-10-13T18:20:11.750 回答