异常错误必须是IListSource,IEnumerable或IDataSource类型。网格视图

时间:2012-09-19 18:15:29

标签: asp.net ado.net

我得到一个catch exp作为异常错误,其中说数据源是无效类型,它必须是IListSource,IEnumerable或IDataSource类型。

当我尝试通过gridview将新记录添加到数据库时出现此错误,因此我很好地将数据从数据库中获取到此gridview中,因此我不明白当数据库是数据库时我将catch exp作为异常不可用。 @thesli_number OleDbType.VarChar Value = thenumber是db中的数字类型。

 'Add new record to DB
Protected Sub AddNewTask(ByVal sender As Object, ByVal e As EventArgs)
    Dim thecat As String = DirectCast(GridView1.FooterRow.FindControl("txttestcat"), TextBox).Text
    Dim theinfo As String = DirectCast(GridView1.FooterRow.FindControl("txttestinfo"), TextBox).Text
    Dim thenumber As String = DirectCast(GridView1.FooterRow.FindControl("txttestnumber"), TextBox).Text

    Dim strSQL As String = ""
    strSQL = "" & _
    "INSERT INTO [TableTest] " & _
    "([test_cat], [test_info], [test_number])" & _
    "VALUES (@thesli_cat, @thesli_info, @thesli_number)"

    Using conn As New OleDbConnection(ConfigurationManager.ConnectionStrings("MyConnStr").ConnectionString)
        Try
            conn.Open()
            Dim cmd As New OleDbCommand(strSQL, conn)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.Add("@thesli_cat", OleDbType.VarChar).Value = thecat
            cmd.Parameters.Add("@thesli_info", OleDbType.VarChar).Value = theinfo
            cmd.Parameters.Add("@thesli_number", OleDbType.VarChar).Value = thenumber
            GridView1.DataSource = cmd
            GridView1.DataBind()
            'MsgBox("Row(s) Added !! ")
        Catch exp As OleDbException
            If True Then
                MsgBox("Error trying to add current record. " & vbCrLf & "Error: " & exp.Message & "Database Error", MsgBoxStyle.OkOnly, MsgBoxStyle.Critical)
            End If
        Catch exp As Exception
            If True Then
                MsgBox("Error the Database can be unavailable atm. " & vbCrLf & "Error: " & exp.Message & "Database Error", MsgBoxStyle.OkOnly, MsgBoxStyle.Information)
            End If
        End Try
    End Using
End Sub

EDIT ................ EDIT ................. EDIT ........... ........ EDIT

好的我现在可以将数据添加到gridview,我可以删除记录,我可以添加新记录。 但是我无法让更新事件发挥作用,你能看到这个新代码中的错误吗?

    'Update record
Protected Sub UpdateTask(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
    Dim theid = Convert.ToInt32(DirectCast(GridView1.FooterRow.FindControl("lbltestid"), Label).Text)
    Dim thecat As String = DirectCast(GridView1.FooterRow.FindControl("lbltestcat"), Label).Text
    Dim theinfo As String = DirectCast(GridView1.FooterRow.FindControl("lbltestinfo"), Label).Text
    Dim thenumber As String = DirectCast(GridView1.FooterRow.FindControl("lbltestnumber"), Label).Text

    Dim strSQL As String = ""
    strSQL = "" & _
    "UPDATE [TableTest] " & _
    "SET [test_cat] = @thesli_cat, [test_info] = @thesli_info, [test_number] = @thesli_number " & _
    "WHERE [test_id] = @thesli_id"

    Using conn As New OleDbConnection(ConfigurationManager.ConnectionStrings("MyConnStr").ConnectionString)
        Try
            conn.Open()
            Dim cmd As New OleDbCommand(strSQL, conn)
            cmd.CommandType = CommandType.Text
            cmd.Parameters.Add("@thesli_id", OleDbType.Integer).Value = theid
            cmd.Parameters.Add("@thesli_cat", OleDbType.VarChar).Value = thecat
            cmd.Parameters.Add("@thesli_info", OleDbType.VarChar).Value = theinfo
            cmd.Parameters.Add("@thesli_number", OleDbType.Integer).Value = thenumber
            cmd.ExecuteNonQuery()
            'MsgBox("Row(s) Updated !! ")
            GridView1.EditIndex = -1
            GetRecords()
        Catch exp As OleDbException
            If True Then
                MsgBox("Error trying to add current record. " & vbCrLf & "Error: " & exp.Message & "Database Error", MsgBoxStyle.OkOnly, MsgBoxStyle.Critical)
            End If
        Catch exp As Exception
            If True Then
                MsgBox("Error the Database can be unavailable atm. " & vbCrLf & "Error: " & exp.Message & "Database Error", MsgBoxStyle.OkOnly, MsgBoxStyle.Information)
            End If
        End Try
    End Using
End Sub

0 个答案:

没有答案