Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

asp.net

DropDownList com DataReader

Recommended Posts

Galera bom dia,

 

Como faço para popular um DropDownList que encontra-se numa página

utilizando como Datasource um DataReader que encontra-se em uma classe. A

situação é a seguinte:

 

Classe usuario:

 

'////////////////// função para carregar o tipo do usuario

Public Function carrega_tipo() As Odbc.OdbcDataReader

Try

With cmd

.fc_comando("Select tp_usuario.tipo, tp_usuario.id from

tp_usuario", 1)

dt = .fc_consulta(2)

End With

Catch ex As Exception

 

End Try

Return dt

End Function

 

Classe advogado: (Herda da classe usuario)

Public Class cl_advogado : Inherits cl_usuario

 

Página aspx

 

'/////////////////////// Importo a classe advogado

Imports advogaweb.cl_advogado

 

'////////////////////// Crio uma nova instancia para a classe advogado

Private novo_adv As New cl_advogado

 

'////////////////////// No page_load da página chamado uma função para carregar

'////////////////////// um dropdownlist utilizando com DataSource um DataReader

'////////////////////// que no caso recebe o resultado da função da classe usuario

'////////////////////// que acessa o banco e retorna o DataReader

 

Function carrega_novo()

lb_data.Text = Date.Now.ToShortDateString

'////////////////////// Nesta linha abaixo é onde jogo para dentro do DataReader

'////////////////////// desta página o resultado da consulta feito na classe usuario

dt = novo_adv.carrega_tipo

ddl_tipo.DataSource = dt

ddl_tipo.DataValueField = ID

ddl_tipo.DataTextField = tipo

ddl_tipo.DataBind()

End Function

 

Só que o problema é que já no próprio Vs.net ele diz que tipo não foi

declarado. Tipo é uma das colunas da consulta ao banco, como posso fazer

referencia a esta coluna da tabela que está numa função dentro de uma classe

à qual é herdade por uma segunda classe (cl_advogado) e que por fim executa a

função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

primeiramente, não vi no seu código a declaração do objeto DataReader, no caso você chamou de "dt", segundo: as propriedades DataValueField e DataTextField devem ser informadas através de tipos de dados string, ou seja, "ID" e "tipo".

 

Espero que ajude,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu naum coloquei o código completo para economizar. Agora se eu fizer da maneira que você falou ele não gera erro, mas também o dropdownlist fica vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dica.. Eu uso dataset tipado para encher dropdownlistfaço da seguinte forma: Crio um aquivo do tipo dataSet .xsd, la transfiro todas as tabela que me enteressam.salvo com um nome qualquer .. por exemplo DsTestedepois crio uma classe com um metodo que retorna um dataset desse tipo.. por exemplo.public class config {public static DsTeste CarregaGrupo() { OleDbConnection Cnn = new OleDbConnection(string de conexao); try { //adapter OleDbDataAdapter DaGrupo = new OleDbDataAdapter(); // data set DsTeste DsGrupo = new DsTeste(); // command OleDbCommand cmd = new OleDbCommand("",Cnn); cmd.CommandText="select * from grupos"; DaGrupo.SelectCommand=cmd; Cnn.Open(); DaGrupo.Fill(DsGrupo.grupos); return DsGrupo; } finally { Cnn.Close(); } }}//depois eu vou no arquivo aspx que eu quero popular a combo e e faço issoprivate void Page_Load(object sender, System.EventArgs e) { if(!Page.IsPostBack) { //carrega o grupo DsTeste DsGrupo = config.CarregaGrupo(); dplGrupo.DataSource=new DataView(DsGrupo.grupos); dplGrupo.DataTextField="grupo"; dplGrupo.DataValueField="id_group"; dplGrupo.DataBind();}}// seu drop downlista vai ficar populado na boa, com apenas algumas linhas de codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.