Ir para conteúdo

POWERED BY:

Arquivado

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

Dynabout

[Resolvido] DropDownList

Recommended Posts

Primeiramente Saudações a todos os membros, sou novo aqui(minha primeira postagem :rolleyes: ).

Bom irei direto ao assunto.

Preciso de ajuda com uns dropdownlist. É o seguinte, estou desenvolvendo uma pagina web(vb.net), com a função de cadastro/exclusão/alteração/pesquisa de ramais, e nela possuo 3 dropdownlist que precisam ser aninhados entre si, ate ai tudo bem, consegui fazer isso numa boa usando o datasource. Só que ai apareceu um probleminha, meu chefe me pediu que os dropdownlist não tivessem uma ordem específica para escolher.

Por exemplo: com o datasource quando eu escolhia um item do primeiro dropdownlist (ddl), automaticamente ele mudava as opções do segundo(que são relacionadas com o primeiro) e automaticamente mudava as opções do terceiro ddl(que eram relacionadas com o primeiro e segundo).

Só que tinha essa ordem de escolha, tinha que ser de cima para baixo, alguém saberia como fazer isso sem ordem específica? Tipo eu seleciono o ultimo ddl ele ja muda as opções dos outros 2, se eu seleciono o ddl do meio ele muda as opções dos outro dois(do primeiro e do ultimo), acho que fui claro.

Minha base possui 4 tabelas(Segmento, Unidade, Departamento, Ramal), organizados da seguinte maneira: ramal pertence a departamento que pertence a unidade e que pertence a segmento.

Abaixo um pouco do código do que eu tentei fazer:Esses 2 são da classe que faz a pesquisa no banco sql.

Public Function ddlDCSEGTO_WebForm_DEPTO(ByVal prmCDSEGTO As String, ByVal prmCDUNIDADE As String) As DataTable

		Dim strQuery As New StringBuilder
		strQuery.Append("  SELECT S.CDSEGTO						   ,")
		strQuery.Append("		 S.DCSEGTO							")
		strQuery.Append("  FROM SEGTO S								")
		'strQuery.Append("  INNER JOIN UNIDADE U						")
		'strQuery.Append("  ON U.CDSEGTO = S.CDSEGTO					")
		strQuery.Append("  WHERE S.CDSEGTO = '" & prmCDSEGTO & "'		")
		'If Not prmCDUNIDADE = 0 Then
		'strQuery.Append("  AND U.CDUNIDADE = '" & prmCDUNIDADE & "'  ")
		'End If

		Return cldBancoDados.RetornaDataTable(strQuery.ToString)

	End Function
Public Function ddlDCUNIDADE_WebForm_DEPTO(ByVal prmCDUNIDADE As String, ByVal prmCDSEGTO As String) As DataTable

		Dim strQuery As New StringBuilder
		strQuery.Append("  SELECT U.CDUNIDADE					   ,")
		strQuery.Append("		 U.DCUNIDADE					   ,")
		strQuery.Append("		 U.CDSEGTO						  ")
		'strQuery.Append("		 S.DCSEGTO						  ")
		strQuery.Append("  FROM UNIDADE U							")
		strQuery.Append("  INNER JOIN SEGTO S						")
		strQuery.Append("  ON S.CDSEGTO = U.CDSEGTO				  ")
		strQuery.Append("  WHERE U.CDUNIDADE = '" & prmCDUNIDADE & "'  ")
		'If Not prmCDSEGTO = 0 Then
		'strQuery.Append("  AND S.CDSEGTO = '" & prmCDSEGTO & "'	")
		'End If

		Return cldBancoDados.RetornaDataTable(strQuery.ToString)

	End Function
E agora segue o código do formulário em que será chamada as querys da classe:

'Sub carrega ddlDCSEGTO
	Private Sub CarregaCampoddlDCSEGTO()
		Dim TEMP As String = ddlDCSEGTO.Text

		Dim dt As Data.DataTable = querySql.ddlDCSEGTO_WebForm_DEPTO(ddlDCSEGTO.SelectedValue, ddlDCUNIDADE.SelectedValue)
		ddlDCSEGTO.DataTextField = "DCSEGTO"
		ddlDCSEGTO.DataValueField = "CDSEGTO"
		ddlDCSEGTO.DataSource = dt.DefaultView
		ddlDCSEGTO.DataBind()
		Try
			If ddlDCSEGTO.Items.Count = 2 Then
				ddlDCSEGTO.Items.Remove(0)
			Else
				ddlDCSEGTO.Text = TEMP
			End If

		Catch

		End Try

	End Sub

	'sub que carrega a ddlDCUNIDADE
	Private Sub CarregaCampoddlDCUNIDADE()
		Dim TEMP As String = ddlDCUNIDADE.Text

		Dim dt As Data.DataTable = querySql.ddlDCUNIDADE_WebForm_DEPTO(ddlDCUNIDADE.SelectedValue, ddlDCSEGTO.SelectedValue)
		ddlDCUNIDADE.DataTextField = "DCUNIDADE"
		ddlDCUNIDADE.DataValueField = "CDUNIDADE"
		ddlDCUNIDADE.DataSource = dt.DefaultView
		ddlDCUNIDADE.DataBind()
		Try
			If ddlDCUNIDADE.Items.Count = 2 Then
				ddlDCUNIDADE.Items.Remove(0)
			Else
				ddlDCUNIDADE.Text = TEMP
			End If

		Catch

		End Try

	End Sub
Protected Sub ddlDCSEGTO_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlDCSEGTO.TextChanged

		If Page.IsPostBack Then
			CarregaCampoddlDCSEGTO()
			'CarregaCampoddlDCUNIDADE()
		End If

	End Sub
Protected Sub ddlDCUNIDADE_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlDCUNIDADE.TextChanged

		If Page.IsPostBack Then
			'CarregaCampoddlDCSEGTO()
			CarregaCampoddlDCUNIDADE()
		End If

	End Sub
Private Sub CarregaddlDCSEGTO_eventoLoad()

		'busca os dados na tabela SQL para depois preencher o dropdownlist
		Dim strQuery As String
		Dim strConn As String
		Dim ConnDB As SqlConnection
		Dim dsSEGTO As Data.DataSet
		Dim daSEGTO As SqlDataAdapter

		'passa a query que busca os dados na tabela sql e faz a conexão com o banco de dados
		strQuery = "SELECT CDSEGTO, DCSEGTO FROM SEGTO"
		strConn = "Data Source=BRABDO-ITDEV-09\SQLEXPRESS;Initial Catalog=RAMAL;Persist Security Info=True;User ID=ldc;Password=ldc"

		'Abre o banco   
		ConnDB = New SqlConnection(strConn)
		ConnDB.Open()

		'preenche o dropdownlist
		daSEGTO = New SqlDataAdapter(strQuery, ConnDB)
		dsSEGTO = New Data.DataSet
		daSEGTO.Fill(dsSEGTO, "SEGTO")
		ddlDCSEGTO.DataTextField = "DCSEGTO"
		ddlDCSEGTO.DataValueField = "CDSEGTO"
		ddlDCSEGTO.DataSource = dsSEGTO.Tables("SEGTO").DefaultView
		ddlDCSEGTO.DataBind()

	End Sub

	Private Sub CarregaddlDCUNIDADE_eventoLoad()

		'busca os dados na tabela SQL para depois preencher o dropdownlist
		Dim strQuery As String
		Dim strConn As String
		Dim ConnDB As SqlConnection
		Dim dsUNIDADE As Data.DataSet
		Dim daUNIDADE As SqlDataAdapter

		'passa a query que busca os dados na tebela SQL e faz conexão com o banco de dados
		strQuery = "SELECT CDSEGTO, CDUNIDADE, DCUNIDADE FROM UNIDADE"
		strConn = "Data Source=BRABDO-ITDEV-09\SQLEXPRESS;Initial Catalog=RAMAL;Persist Security Info=True;User ID=ldc;Password=ldc"

		'Abre o banco
		ConnDB = New SqlConnection(strConn)
		ConnDB.Open()

		'preenche o dropdownlist
		daUNIDADE = New SqlDataAdapter(strQuery, ConnDB)
		dsUNIDADE = New Data.DataSet
		daUNIDADE.Fill(dsUNIDADE, "UNIDADE")
		ddlDCUNIDADE.DataTextField = "DCUNIDADE"
		ddlDCUNIDADE.DataValueField = "CDUNIDADE"
		ddlDCUNIDADE.DataSource = dsUNIDADE.Tables("UNIDADE").DefaultView
		ddlDCUNIDADE.DataBind()

	End Sub

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

		'passando as funções que carrega as dropdownlist
		If Not Page.IsPostBack Then
			CarregaddlDCSEGTO_eventoLoad()
			CarregaddlDCUNIDADE_eventoLoad()
			'ResetaCampos()
			'CarregaCampoddlDCSEGTO()
			'CarregaCampoddlDCUNIDADE()
		End If

	End Sub
Desde já agradeço pela sua atenção e tempo despendido em me ajudar e peço desculpas pelo tamanho da postagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Web Applications

 

Cara você terá que criar um contador, uma variável que irá identificar qual foi clicado primeiro e mandar pro método que ele deve ir.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Web Applications

 

Cara você terá que criar um contador, uma variável que irá identificar qual foi clicado primeiro e mandar pro método que ele deve ir.

 

Abraços...

 

Muito Obrigado pela sugestão!!

Tentarei aqui, mais tarde trarei a resposta se deu certo ou não!!

Mais uma vez Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET » Web Applications

 

Cara você terá que criar um contador, uma variável que irá identificar qual foi clicado primeiro e mandar pro método que ele deve ir.

 

Abraços...

 

Muito Obrigado pela sugestão!!

Tentarei aqui, mais tarde trarei a resposta se deu certo ou não!!

Mais uma vez Obrigado!!

 

Não consegui será que teria mais alguma dica ou um exemplo prático?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria uma session com valor 0.

Quando o primeiro DropDown for escolhido, você adiciona mais 1 para o valor da session, e verifica.

Se o valor da session for 1 manda pro evento A, se o valor for 2 manda pro evento B, se o valor for 3 manda pro evento C.

Assim que o segundo Drop for escolhido, você adiciona mais 1 para o valor da session e faz a verificação de novo, e assim por diante.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria uma session com valor 0.

Quando o primeiro DropDown for escolhido, você adiciona mais 1 para o valor da session, e verifica.

Se o valor da session for 1 manda pro evento A, se o valor for 2 manda pro evento B, se o valor for 3 manda pro evento C.

Assim que o segundo Drop for escolhido, você adiciona mais 1 para o valor da session e faz a verificação de novo, e assim por diante.

 

Abraços...

 

Muito Obrigado, irei tentar isso.

Abraços..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro moderador, desculpe a demora, ocorreu um imprevisto aqui e fui realocado para dar manutenção em outro software, tendo que abandonar momentaneamente este projeto. Mas agora voltei e consegui sanar o problema. Se você puder marcar esse topico como solucionado ficaria grato.

Mais uma vez desculpa pela demora a outros usuarios que talvez se interressaram. Se alguem quiser a resposta me mande uma pm.Grato.

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.