'cfeedback'类型的值无法转换为'system.collections.arraylist'

时间:2012-01-10 02:56:51

标签: vb.net visual-studio

首先,我的主页上有一个grdData。选择我想要的数据后,使用

转到另一个页面
    Request.QueryString("id")

在该页面中,我想使用

创建另一个grdData
    Request.QueryString("id")

但是出现了错误

    Value of type 'cfeedback' cannot be converted to 'system.collections.arraylist'

以下是我的代码

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim objArrayList As New ArrayList
    Dim objCDBFeedback As New CDBFeedback
    Dim intGuestID2 As Integer
    intGuestID2 = Request.QueryString("id")
    objArrayList = objCDBFeedback.getFeedBack(intGuestID2)
    grdResult.DataSource = objArrayList


    grdResult.DataBind()

    grdResult.HeaderRow.BackColor = Drawing.Color.AliceBlue
    grdResult.RowStyle.BackColor = Drawing.Color.BlanchedAlmond
    grdResult.AlternatingRowStyle.BackColor = Drawing.Color.LightSalmon

    grdResult.Columns(0).Visible = True


End Sub

我的功能

    Public Function getFeedBack(ByVal pintGuestID1 As Integer) As CFeedback
    Dim objCmd As New MySqlCommand
    Dim objCn As New MySqlConnection(connectionString)
    Dim objAdapter As New MySqlDataAdapter
    Dim strSQL As String = ""
    Dim objDs As New DataSet
    Dim objDataRow As DataRow

    strSQL = "SELECT * FROM tblFeedback WHERE strGuestCodeFB=" & pintGuestID1
    objCmd.CommandText = strSQL
    objCmd.Connection = objCn
    objAdapter.SelectCommand = objCmd

    objCn.Open()

    objAdapter.Fill(objDs, "tblFeedback")
    objDataRow = objDs.Tables("tblFeedback").Rows(0)
    Dim objCFeedback As New CFeedback


    objCFeedback.Feedback = objDataRow.Item("strGuestCompanyTI")

    objCn.Close()
    Return objCFeedback
End Function

我的班级

Public Class CFeedback
Private strGuestCodeFB As Integer
Private strFeedBackFB As String

Public Property GuestId() As String
    Get
        Return strGuestCodeFB
    End Get
    Set(ByVal value As String)
        strGuestCodeFB = value
    End Set
End Property

Public Property Feedback() As String
    Get
        Return strFeedBackFB
    End Get
    Set(ByVal value As String)
        strFeedBackFB = value
    End Set
End Property

End Class

那么有可能在querystring上有一个grdData吗?

1 个答案:

答案 0 :(得分:1)

您需要做的第一件事就是编辑后面的代码并在顶部添加以下两行:

Option Explicit On
Option Strict On

这将显示至少一个错误:将一种CFeedback分配给一种ArrayList。

您需要确定对此的适当解决方案是什么,但我怀疑您要从GetFeedback而不仅仅是一个项目返回ArrayList或通用List。

因此,除了其他更改之外,您还需要将页面加载更改为:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim objCDBFeedback As New CDBFeedback
    Dim intGuestID2 As Integer
    intGuestID2 = CInt(Request.QueryString("id"))

    Dim cValues As System.Collections.Generic.List(Of CFeedback)

    cValues = objCDBFeedback.getFeedBack(intGuestID2)

    grdResult.DataSource = cValues
    grdResult.DataBind()

    grdResult.HeaderRow.BackColor = Drawing.Color.AliceBlue
    grdResult.RowStyle.BackColor = Drawing.Color.BlanchedAlmond
    grdResult.AlternatingRowStyle.BackColor = Drawing.Color.LightSalmon

    grdResult.Columns(0).Visible = True

    grdResult.Visible = cValues.Count <> 0
End Sub

getFeeback方法看起来像:

    Public Function getFeedBack(ByVal pintGuestID1 As Integer) As System.Collections.Generic.List(Of CFeedback)
        Dim cValues As New System.Collections.Generic.List(Of CFeedback)

        Using objCn As New MySqlConnection(connectionString)
            Using objCmd As New MySqlCommand
                Dim strSQL As String = ""

                strSQL = "SELECT * FROM tblFeedback WHERE strGuestCodeFB=" & pintGuestID1
                objCmd.CommandText = strSQL
                objCmd.Connection = objCn

                objCn.Open()

                Using oReader As MySqlDataReader = objCmd.ExecuteReader
                    Do While oReader.Read
                        Dim objCFeedback As New CFeedback

                        objCFeedback.Feedback = oReader.Item("strGuestCompanyTI")

                        cValues.Add(objCFeedback)
                    Loop
                End Using

                objCn.Close()
            End Using
        End Using

        Return cValues
    End Function