Ir para conteúdo

Arquivado

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

cintiadel

[Resolvido] checar checkbox

Recommended Posts

tenho essa rotina no load da minha página, no banco o campo cod_servico é do tipo int, que tem valores 1 e 2, se for 1 preciso que apareça ckb_n selecionado, se for 2 o ckb_b seja selecionado, e se no banco tiver os dois registros os dois venham selecionados, ou se tiver nenhum q os dois fiquem sem o checked.

espero ter conseguido explicar, desde já agradeço

 

Dim conexao As New Data.SqlClient.SqlConnection("string de conexao")
		Dim comando As New Data.SqlClient.SqlCommand
		Dim lista_email As Data.SqlClient.SqlDataReader

		conexao.Open()
		comando.Connection = conexao
		comando.CommandText = "Select al_codigo, cod_servico, email from tabela1 inner join tabela2 ON tabela2.codigo = tabela1.al_codigo where tabela2.codigo='" & Session("num") & "'"
		lista_email = comando.ExecuteReader()


		While lista_email.Read()
			'Converte o valor para booleano
			If lista_email("cod_servico") = "1" Then
				ckb_n.Checked = CBool(lista_email("cod_servico"))
			Else
				ckb_n.Checked = False
			End If

			If lista_email("cod_servico") = "2" Then
				ckb_b.Checked = CBool(lista_email("cod_servico"))
			Else
				ckb_b.Checked = False
			End If
		End While

		conexao.Close()

Compartilhar este post


Link para o post
Compartilhar em outros sites

If lista_email("cod_servico") = "1" Then
				ckb_n.Checked = True
			Else
				ckb_n.Checked = False
			End If

			If lista_email("cod_servico") = "2" Then
				ckb_b.Checked = True
			Else
				ckb_b.Checked = False
			End If

Eu acho que do jeito que coloquei a cima ja resolve.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

não funcionou ele continua trazendo so o primeiro registro(checkbox) selecionado, parece q tem algo errado do while pq ele so passa uma vez e o certo seria duas vezes, eu acho, rodando o comando sql no banco de dados ele mostra duas linhas , uma com o cod_servico = 1 e outra com cod_servico=2

 

al_codigo	cod_servico	email
20080001	1		teste@teste.com.br
20080001	2		teste@teste.com.br

<table>
		<tr>
			<td colspan="2">
				<span class="style6">Cadastre seu e-mail :</span></td>
		</tr>
		<tr>
			<td class="style7">
				E-mail:</td>
			<td style="text-align: left">
				<asp:TextBox ID="txt_email" runat="server" Width="300px"/>
			 </td>
		</tr>
		<tr>
			<td colspan="2">
				<span class="style6">Selecione quais informações você deseja receber em seu e-mail:
				</span></td>
		</tr>
		<tr>
			<td style="text-align: left" colspan="2" class="style8">
				<asp:CheckBox ID="ckb_notas_faltas" runat="server" 
					Font-Names="Arial Unicode MS" Font-Size="Small" 
					Text="Servico 2"/>
			</td>
		</tr>
		<tr>
			<td style="text-align: left" colspan="2" class="style8">
				<asp:CheckBox ID="ckb_boletos" runat="server" Font-Names="Arial Unicode MS" 
					Font-Size="Small" Text="Serviço 2" />
			</td>
		</tr>
		<tr>
			<td style="text-align: left" colspan="2">
				<asp:ImageButton ID="btn_enviar" runat="server" 
					ImageUrl="~/img/enviar.png" />
			</td>
		</tr>
</table>

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

 

O while esta correto, se não passou duas vezes é problema no select.

 

Abraços...

mas eu rodei o select no banco e esta correto

eu debuguei o codigo, e ele passou duas vezes mas mesmo assim ele n traz os dois selecionados, apenas ou um ou outro

Compartilhar este post


Link para o post
Compartilhar em outros sites

No outro post você disse que passou somente uma vez pelo while.

 

Abraços...

desculpe esta passando duas vezes sim, mas ele acaba marcando somente o resultado da segunda vez q passa pelo while, esta perdendo o valor de primeira passagem do while.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que eu reparei não tem como os dois ficarem checados da forma que esta fazendo.

Tente o seguinte:

 

If lista_email("cod_servico") = "1" Then
	ckb_n.Checked = True
End If

If lista_email("cod_servico") = "2" Then
	ckb_b.Checked = True
End If

Por que o que acontece é o seguinte, o primeiro registro tem o cod_servico = 1 e o segundo registro tem o cod_servico = 2.

Quando ele passava a primeira vez ele marca o primeiro checkbox e o segundo não, quando ele passava no segundo registro ele limpava o primeiro e marcava o segundo.

Acho que da forma que esta agora funciona.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que eu reparei não tem como os dois ficarem checados da forma que esta fazendo.

Tente o seguinte:

 

If lista_email("cod_servico") = "1" Then
	ckb_n.Checked = True
End If

If lista_email("cod_servico") = "2" Then
	ckb_b.Checked = True
End If

Por que o que acontece é o seguinte, o primeiro registro tem o cod_servico = 1 e o segundo registro tem o cod_servico = 2.

Quando ele passava a primeira vez ele marca o primeiro checkbox e o segundo não, quando ele passava no segundo registro ele limpava o primeiro e marcava o segundo.

Acho que da forma que esta agora funciona.

 

Abraços...

se eu fizer dessa forma ele tbm so checa o primeiro

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema que a lógica que esta usando esta errada. Você deveria ter dois campos na sua tabela, um para cada checkbox.

 

Abraços...

acabei fazendo com dois selects separados usando o codigo como clausula where

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.