none
DropDownList passando parâmetro com datareader RRS feed

  • Pergunta

  • Executando o select do comando abaixo direto no banco SQL Server retorna com todos os registros na condição de cod_evento=1, porém com o DropDownList1_nome_evento.SelectedValue=1 retorna apenas 1 registro do banco.

    Alguém tem alguma sugestão?

    Camada View

      Dim DTevento_pf As New ClassModel5_evento()
                DTevento_pf.busca_ev_pf(Convert.ToInt32(DropDownList1_nome_evento.SelectedValue))
                Dim lista As New List(Of ClassModel5_evento)()
                lista.Add(DTevento_pf)
                DropDownList3_nome.Items.Clear()
                DropDownList3_nome.DataSource = lista
                DropDownList3_nome.DataValueField = ("cod_pf")
                DropDownList3_nome.DataTextField = ("nome_completo")
                DropDownList3_nome.DataBind()
                DropDownList3_nome.Items.Insert(0, "Selecione opção abaixo")
                DropDownList3_nome.SelectedIndex = 0

    Camada Model

    Public Sub busca_ev_pf(ByVal cod_evento)
            Dim model_evento_DT As DataTable
            Dim comando As String
            comando = "SELECT A.cod_evento,A.cod_pf,B.nome_completo FROM tb_pf_evento A, tb_cad_pf B WHERE A.cod_pf=B.id_pf and A.cod_evento = @Par1"
            Dim param As ArrayList = New ArrayList()
            param.Add(cod_evento)
            model_evento_DT = ClassData1_SelReaderCparam.sel(comando, param)
            For Each linha In model_evento_DT.Rows
                a_cod_evento = cod_evento
                a_cod_pf = linha("cod_pf")
                a_nome_completo = linha("nome_completo")
            Next
        End Sub

    Camada Data

    Imports System.Data.SqlClient
    Public Class ClassData1_SelReaderCparam
        Public Shared Function sel(ByVal comando As String, ByVal param As ArrayList) As DataTable
            Dim objDR As SqlDataReader
            Dim Data_DataTable As DataTable = New DataTable()
            Using CN As SqlConnection = New SqlConnection()
                Try
                    CN.ConnectionString = My.Settings.cn1
                    Dim com As SqlCommand = New SqlCommand()
                    com.CommandText = comando
                    com.CommandType = CommandType.Text
                    Dim c As Integer = 0

                    For Each item In param
                        c += 1
                        com.Parameters.Add(String.Format("@Par{0}", c), GetDBType(item.GetType())).Value = item
                    Next
                    com.Connection = CN
                    CN.Open()
                    objDR = com.ExecuteReader(CommandBehavior.CloseConnection)
                    Data_DataTable.Load(objDR)
                    CN.Close()
                    Return Data_DataTable
                Catch ex As Exception
                    '...................... colocar tratamento de erros
                    '
                End Try
                Return Data_DataTable
            End Using
        End Function

        Public Shared Function GetDBType(ByVal theType As System.Type) As SqlDbType
            Dim param As SqlParameter = New SqlParameter()
            Dim tc As System.ComponentModel.TypeConverter
            tc = System.ComponentModel.TypeDescriptor.GetConverter(param.DbType)
            If tc.CanConvertFrom(theType) Then
                param.DbType = tc.ConvertFrom(theType.Name)
            End If
            Return param.SqlDbType
        End Function
    End Class


    Com carregar a lista de nome_completo e cod_pf para no DropDownList?

    • Editado Wilson Boris terça-feira, 23 de julho de 2013 13:10 adequaçao
    segunda-feira, 22 de julho de 2013 19:15

Todas as Respostas

  • Com DataAdapter eu consigo o retorno conforme o esperado, abaixo o código:

    Dim Dadapter16 As SqlDataAdapter = New SqlDataAdapter
                    Dadapter16.SelectCommand = New SqlCommand("SELECT A.cod_evento,A.cod_pf,B.nome_completo FROM tb_pf_evento A, tb_cad_pf B WHERE A.cod_pf=B.id_pf ORDER BY B.nome_completo", New SqlConnection(My.Settings.cn1))
                    Dadapter16.Fill(Dset, "Dset_tb_pf_evento")

                    If IsPostBack Then
                    DSet.Tables.Clear()
                    Retorno_DataSet.ReadXml(Server.MapPath("output.xml"))
                    DropDownList3_nome.Items.Clear()
                    Dim ItemDataView As New DataView(Retorno_DataSet.Tables("DSet_tb_pf_evento"))
                    ItemDataView.RowFilter = "cod_evento = " & DropDownList1_nome_evento.SelectedItem.Value
                    DropDownList3_nome.DataSource = ItemDataView
                    DropDownList3_nome.DataTextField = ("nome_completo")
                    DropDownList3_nome.DataValueField = ("cod_pf")
                    DropDownList3_nome.DataBind()
                    DropDownList3_nome.Items.Insert(0, "Selecione opção abaixo")
                    DropDownList3_nome.SelectedIndex = 0
                    End If

    Aguardo sugestões para modo conectado com datareader!

    terça-feira, 23 de julho de 2013 00:58