Usuário com melhor resposta
Carregando DropDownList modelo 3 camadas

Pergunta
-
Alguma sugestão para o código carregar o DropDownList5_empresa?
CAMADA DATA
Public Class ClassData1_SelReader
Public Shared Function sel(ByVal comando As String, ByVal param As ArrayList) As DataTable
Dim objDR As SqlDataReader
Dim data_DT 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_DT.Load(objDR)
CN.Close()
Return data_DT
Catch ex As Exception
'...erros
End Try
Return data_DT
End Using
End FunctionCAMADA MODEL
Public Class ClassModel5_Empresa
Dim a_id_pj As Integer
Dim a_nome_empresarial As String
Public Sub empresa(ByVal id_pj, ByVal nome_empresarial)
Dim Model_DataTable As DataTable
Dim comando As String
comando = "SELECT id_pj,nome_empresarial FROM tb_cad_pj WHERE id_pj=@Par1,nome_empresarial=@Par2 ORDER nome_empresarial"
Dim param As ArrayList = New ArrayList()
param.Add(nome_empresarial)
param.Add(id_pj)
Model_DataTable = ClassData1_SelReader.sel(comando, param)
For Each linha In Model_DataTable.Rows
a_id_pj = id_pj
a_nome_empresarial = nome_empresarial
Next
End Sub
Public Property id_pj() As Integer
Get
Return a_id_pj
End Get
Set(ByVal value As Integer)
a_id_pj = value
End Set
End Property
Public Property nome_empresarial() As String
Get
Return a_nome_empresarial
End Get
Set(ByVal value As String)
a_nome_empresarial = value
End Set
End PropertyCAMADA VIEW
Private Sub Carga_Drop_Empresa()
Dim Empresa As New ClassModel5_Empresa()
DropDownList5_empresa.Items.Clear()
DropDownList5_empresa.DataSource = .........
DropDownList5_empresa.DataTextField = Empresa.nome_empresarial
DropDownList5_empresa.DataValueField = Empresa.id_pj
DropDownList5_empresa.DataBind()
End Sub
Respostas
-
Olá Wilson,
Você precisa alimentar a propriedade DataSource com uma listagem das Empresas que deseja apresentar no combobox. No seu caso pode criar uma variável do tipo List(Of CallModel5_Empresa) e adicionar a sua variável Empresa nesta lista. Então alimenta a lista na propriedade DataSource do combobox. Deve funcionar.
Att.
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:01
-
Wilson,
Esta linha:
Dim Lista As List(Of Empresa)()
deve ser:
Dim Lista As New List(Of ClassModel5_Empresa)() Lista.Add(Empresa)
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:01
-
Certo,
É que na propriedade DataVelueField você está informando o valor do ID e na verdade o DropDownList precisa que você informe o nome da propriedade que contém o valor para que ele busque o valor entende?
Ficaria assim:
DropDownList5_Pesquisa.DataValueField = "id_pj"
Dá uma olhada neste artigo aqui: http://www.macoratti.net/aspn_ddl.htm
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:01
-
OK Wilson,
O detalhe é que você implementou a alimentação da classe ClassModel5_Empresa no método empresa(...)
Então para que entre neste método, você terá que (antes de fazer o comando Lista.Add(Empresa)) chamar o método assim:
Empresa.empresa(id, nome)
Para então o método ser chamado e fazer a pesquisa que você definiu, pois até agora este método não é chamado em lugar algum, por isso não entrava nele no Debug.
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:00
-
Wilson,
(obrigado... estou aí para ajudar!)
Na verdade você deve criar estas duas variáveis primeiro ou então passar diretamente o código na primeira, sendo o ID que vc quer buscar e na segunda o nome da empresa que vc quer buscar entre aspas. Digamos que vc queria pesquisa o cliente com código 10 e com o nome Empresa então você deve fazer assim:
Empresa.empresa(10, "Empresa")
Foi isso que eu entendi de sua classe pelo menos...
Ahh outra coisa... lá na classe onde você definiu o método empresa o bom é colocar o tipo de cada parâmetro que você está recebendo, por exemplo eu acredito que o primeiro seja um Integer e o segundo seja uma String, então ficaria assim lá na classe:
Public Sub empresa(ByVal id_pj As Integer, ByVal nome empresarial As String)
Att,
Fabio Rosa.
- Editado Fabio Rosa quarta-feira, 15 de maio de 2013 21:55
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:00
Todas as Respostas
-
Olá Wilson,
Você precisa alimentar a propriedade DataSource com uma listagem das Empresas que deseja apresentar no combobox. No seu caso pode criar uma variável do tipo List(Of CallModel5_Empresa) e adicionar a sua variável Empresa nesta lista. Então alimenta a lista na propriedade DataSource do combobox. Deve funcionar.
Att.
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:01
-
Olá Fábio,
obrigado pelo retorno, estou errando em alguma coisa: Erro 1
Private Sub Carga_Drop_Empresa()
Dim Empresa As New ClassModel5_Empresa()
Dim Lista As List(Of Empresa)()
'Error 1 Type 'Empresa' is not defined.
DropDownList5_Pesquisa.Items.Clear()
DropDownList5_Pesquisa.DataSource = Lista
DropDownList5_Pesquisa.DataTextField =
DropDownList5_Pesquisa.DataValueField = Empresa.id_pj
DropDownList5_Pesquisa.DataBind()
End Sub -
Wilson,
Esta linha:
Dim Lista As List(Of Empresa)()
deve ser:
Dim Lista As New List(Of ClassModel5_Empresa)() Lista.Add(Empresa)
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:01
-
Fabio,
ao fazer o breakpoint em Dim Empresa As New ClassModel5_Empresa()
o cursor não vai para a camada model e seguindo nas linhas da Private Sub Carga_Drop_Empresa()
parando na linha DropDownList5_Pesquisa.DataBind() com mensagem:
DataBinding da Model não contem uma propriedade com o nome "0".
-
Certo,
É que na propriedade DataVelueField você está informando o valor do ID e na verdade o DropDownList precisa que você informe o nome da propriedade que contém o valor para que ele busque o valor entende?
Ficaria assim:
DropDownList5_Pesquisa.DataValueField = "id_pj"
Dá uma olhada neste artigo aqui: http://www.macoratti.net/aspn_ddl.htm
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:01
-
Obrigado pela referência, mas ainda estou patinando com o código abaixo.
Debugando percebo que o select não está funcionando, o comando não chega "Public Sub empresa(ByVal id_pj, ByVal nome_empresarial)"
O DropDownList5_Pesquisa retorna vazio.
Private Sub Carga_Drop_Empresa()
Dim Empresa As New ClassModel5_Empresa()
Dim Lista As New List(Of ClassModel5_Empresa)()
Lista.Add(Empresa)
DropDownList5_Pesquisa.Items.Clear()
DropDownList5_Pesquisa.DataSource = Lista
DropDownList5_Pesquisa.DataTextField = "nome_empresarial"
DropDownList5_Pesquisa.DataValueField = "id_pj"
DropDownList5_Pesquisa.DataBind()
End Sub
-
OK Wilson,
O detalhe é que você implementou a alimentação da classe ClassModel5_Empresa no método empresa(...)
Então para que entre neste método, você terá que (antes de fazer o comando Lista.Add(Empresa)) chamar o método assim:
Empresa.empresa(id, nome)
Para então o método ser chamado e fazer a pesquisa que você definiu, pois até agora este método não é chamado em lugar algum, por isso não entrava nele no Debug.
Fabio Rosa.
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:00
-
-
Wilson,
(obrigado... estou aí para ajudar!)
Na verdade você deve criar estas duas variáveis primeiro ou então passar diretamente o código na primeira, sendo o ID que vc quer buscar e na segunda o nome da empresa que vc quer buscar entre aspas. Digamos que vc queria pesquisa o cliente com código 10 e com o nome Empresa então você deve fazer assim:
Empresa.empresa(10, "Empresa")
Foi isso que eu entendi de sua classe pelo menos...
Ahh outra coisa... lá na classe onde você definiu o método empresa o bom é colocar o tipo de cada parâmetro que você está recebendo, por exemplo eu acredito que o primeiro seja um Integer e o segundo seja uma String, então ficaria assim lá na classe:
Public Sub empresa(ByVal id_pj As Integer, ByVal nome empresarial As String)
Att,
Fabio Rosa.
- Editado Fabio Rosa quarta-feira, 15 de maio de 2013 21:55
- Marcado como Resposta Wilson Boris quarta-feira, 15 de maio de 2013 22:00
-