Ir para conteúdo

Arquivado

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

Faccruz

Usar DropDownList com pesquisa SQL

Recommended Posts

Preencho um dropdownlist com dados de uma tabela em runtime para usar os dados em uma pesquisa que o cliente irá realizar, mas não está funcionando, ele sempre está pegando o primeiro item.

 

Já tentei o setar AutoPostBack = True, no evento SelectedItemIndex e mesmo assim não consigo realizar o que eu quero.

 

Preenchendo o DropDownList

Public Sub Cidades()
		Dim cmdMySQL As New MySqlCommand("Select Descricao from Lojas order by Descricao;", ConMYSQL)

		ConMYSQL.Open()

		Dim drMySQL As MySqlDataReader = cmdMySQL.ExecuteReader

		While drMySQL.Read
			DropDownList1.Items.Add(drMySQL("Descricao"))
		End While

		ConMYSQL.Close()
	End Sub

Realizando a Pesquisa

Protected Sub btnLocaliza_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnLocaliza.Click
		gvCartelinha.DataSource = Nothing
		gvCartelinha.DataBind()

		Dim daMySQL As MySqlDataAdapter
		Dim dsMySQL As New DataSet
		Dim strSQL As String = "Select * from CARTELINHA"

		ConMYSQL.Open()

		Try
			If rbtnList.SelectedIndex = 0 Then
				strSQL += " WHERE CPF like '%" & edtCPF.Text & "%';"
				daMySQL = New MySqlDataAdapter(strSQL, ConMYSQL)
				daMySQL.Fill(dsMySQL, "Cartelinha")
			Else
				strSQL += " WHERE NotaFiscal = " & edtNF.Text & " and DescLoja LIKE '%" & DropDownList1.Text & "%';"
				daMySQL = New MySqlDataAdapter(strSQL, ConMYSQL)
				daMySQL.Fill(dsMySQL, "Cartelinha")
			End If

			Call FormataGrid()

			gvCartelinha.AutoGenerateColumns = False
			gvCartelinha.DataSource = dsMySQL.Tables("CARTELINHA").DefaultView
			gvCartelinha.DataBind()

			GoTo Fim

		Catch ex As Exception
			lblAvisos.Text = "Erro: " & ex.Message
			GoTo Fim
		End Try

Fim:
		ConMYSQL.Close()
		ConMYSQL = Nothing
		daMySQL = Nothing
		dsMySQL = Nothing

	End Sub

Aproveitando tbm, como eu limpo o GridView antes de realizar uma nova pesquisa? ele está mantendo a "sujeira" da pesquisa anterior

 

Estou usando o Framework 2.0 (motivo do servidor ser Win2k) com Visual Web Developer e banco MySQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você chama o Cidades() no PageLoad?

Ele está dentro do bloco de não postback?

 

if (!this.IsPostBack)
{
Aqui você chamad Cidades()
}

Coloca aqui o evento PageLoad.

Compartilhar este post


Link para o post
Compartilhar em outros sites

está sim

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

		If Not IsPostBack Then
			''Carrega Cidades
			Call Cidades()
		End If

	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho. Coloque um breakpoint no método Cidades() e clique no botão Localizar. Se ao clicar no localizar o evento Cidades() for acionado, você tem um problema, isso não deveria ocorrer.

Tente trocar tambem de DropDownList1.Text para DropDownList1.SelectedItem.Text.

 

Se o problema persistir, coloque aqui todo o código aspx e aspx.cs. Não consigo ver problema no código.

 

Obs.: Fuja de GOTO! Depois do bloco Try/Catch, use um Finally para resetar os valores das variáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz novamente a página... e continua o mesmo erro! Não sei mais onde mexer.

 

tentei tbm o ListBox (com uma linha) mas ele não me retorna nenhum valor, já coloquei eles em um Update Panel (AJAX) e nada tbm...

 

 

será algum bug do Framework 2.0?

 

Deve ser alguma coisa com o Firefox... testei no IE e funciona normal...

 

Agora eu pergunto... tem como eu saber se o browser do cliente é Firefox ou IE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce pode Fazer o seguinte

- Usar o dropdown para selecionar as opcoes,

- Cria um SqlDataSource e definir sua string SQL lá

- No datasource selecione o botao where e nele coloque o parametro que você quer, e defina que o parametro é o DropDownList1.SelectedValue

- Cria um datalist com o Data source criado por voce

Q q coisa post ai

 

E tem o serguinte,

 

Quem interpreta o codigo VB.NET é o IIS,

Logo o browser nao tem nada a ver com o erro(de VB.net)!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E tem o serguinte,

 

Quem interpreta o codigo VB.NET é o IIS,

Logo o browser nao tem nada a ver com o erro(de VB.net)!

 

Mas como você me explica de uma hora pra outra (sem fazer alteração nenhuma) funcionar o IE e não no Firefox?

 

O DropDownList está exibindo corretamente os valores da tabela, o problema é quando eu seleciono um item ele dá um reload e volta para o item 0 (isso no FF - Firefox, no IE fica "parado" no item escolhido) já coloquei breakpoints no Load_page verificando IsPostBack, ele não cai 2 x nessa função. Já coloquei AutoPostBack do componente, já troquei, já REFIZ todo o projeto (1 página) e mesmo assim o erro persiste, e afirmo, isso só no firefox

Compartilhar este post


Link para o post
Compartilhar em outros sites

E tem o serguinte,

 

Quem interpreta o codigo VB.NET é o IIS,

Logo o browser nao tem nada a ver com o erro(de VB.net)!

 

Mas como você me explica de uma hora pra outra (sem fazer alteração nenhuma) funcionar o IE e não no Firefox?

 

O DropDownList está exibindo corretamente os valores da tabela, o problema é quando eu seleciono um item ele dá um reload e volta para o item 0 (isso no FF - Firefox, no IE fica "parado" no item escolhido) já coloquei breakpoints no Load_page verificando IsPostBack, ele não cai 2 x nessa função. Já coloquei AutoPostBack do componente, já troquei, já REFIZ todo o projeto (1 página) e mesmo assim o erro persiste, e afirmo, isso só no firefox

 

Entao cara...

Nao sei bem...Mais pode ser o javascript gerado para dar autoPostBack

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu digo o JS gerado pelo asp.net quando você clica em autopostback

 

Aoi habilitar o autopostback de um dropdownlist o asp.net cria um javascript...

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.