none
Carregando DropDownList modelo 3 camadas RRS feed

  • 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 Function

    CAMADA 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 Property

    CAMADA 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

    quarta-feira, 15 de maio de 2013 00:39

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
    quarta-feira, 15 de maio de 2013 12:34
  • 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
    quarta-feira, 15 de maio de 2013 15:58
  • 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
    quarta-feira, 15 de maio de 2013 18:12
  • 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
    quarta-feira, 15 de maio de 2013 21:34
  • 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
    quarta-feira, 15 de maio de 2013 21:54

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
    quarta-feira, 15 de maio de 2013 12:34
  • 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

    quarta-feira, 15 de maio de 2013 15:52
  • 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
    quarta-feira, 15 de maio de 2013 15:58
  • 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".

    quarta-feira, 15 de maio de 2013 17:12
  • 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
    quarta-feira, 15 de maio de 2013 18:12
  • 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


    quarta-feira, 15 de maio de 2013 21:25
  • 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
    quarta-feira, 15 de maio de 2013 21:34
  • Fabio, voce merece vários pontos pelas respostas....

    quarta-feira, 15 de maio de 2013 21:46
  • 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
    quarta-feira, 15 de maio de 2013 21:54
  • Fabio, muito obrigado.

    Neste caso vou precisar formatar nova idéia, pois a minha intenção é trazer para o DropDownList todas as empresas do banco

    quarta-feira, 15 de maio de 2013 22:00