Inquiridor
É possível carregar DropDownList modo conectado?

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
- Editado Wilson Boris terça-feira, 23 de julho de 2013 17:27 adequação
Todas as Respostas
-
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
-
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 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 IfAguardo sugestões para modo conectado com datareader!