none
Erro ao popular ListBox, DataReader RRS feed

  • Pergunta

  • E  ae pessoal, estou com um problema ao popula o listbox..

    Estou fazendo da seguinte maneira:

        Public Function PreencherListView()
            Dim obj As New CADASTRO
            Dim sql As String = "SELECT * FROM LIVRO"
            Dim dr As SqlDataReader

            Using con As New SqlConnection(ConnectionStringSql)
                Dim cmd As New SqlCommand(sql, con)
                con.Open()
                dr = cmd.ExecuteReader()
                While dr.Read()
                    obj.Nome = dr("NOME").ToString()
                    obj.Autor = dr("AUTOR").ToString()
                    obj.idt_livro = dr("IDT_LIVRO").ToString()
                End While
            End Using
            Return dr
        End Function

    e na pagina Default.aspx faço :

        Public Sub Popular()
            Dim rdr As SqlDataReader

            rdr = CADASTRODAO.PreencherListView()

            lstboxteste.DataSource = rdr
            lstboxteste.DataMember = "NOME"
            lstboxteste.DataValueField = "IDT_LIVRO"
            lstboxteste.DataBind()

        End Sub

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
               Popular()
            End If

    porém da o seguinte erro:

    "Tentativa inválida de chamar FieldCount quando o leitor estava fechado.";

    Podem me ajudar??

    quarta-feira, 26 de dezembro de 2012 17:44

Respostas

  • Quase isso.

    obj.ToString() vai fazer com que seja retornada uma string, e o que deve ser retornado é o objeto  não uma representação dele.

    return obj

    quarta-feira, 2 de janeiro de 2013 18:13

Todas as Respostas

  • Porque você está retornando o datareader em vez do objeto?
    sexta-feira, 28 de dezembro de 2012 20:02
  • O correto é isto:?

    Public Function PreencherListView()
            Dim obj As New CADASTRO
            Dim sql As String = "SELECT * FROM LIVRO"
            Dim dr As SqlDataReader

            Using con As New SqlConnection(ConnectionStringSql)
                Dim cmd As New SqlCommand(sql, con)
                con.Open()
                dr = cmd.ExecuteReader()
                While dr.Read()
                    obj.Nome = dr("NOME").ToString()
                    obj.Autor = dr("AUTOR").ToString()
                    obj.idt_livro = dr("IDT_LIVRO").ToString()
                End While
            End Using
            Return obj.ToString()
        End Function

    segunda-feira, 31 de dezembro de 2012 13:34
  • Quase isso.

    obj.ToString() vai fazer com que seja retornada uma string, e o que deve ser retornado é o objeto  não uma representação dele.

    return obj

    quarta-feira, 2 de janeiro de 2013 18:13