Ir para conteúdo

Arquivado

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

cintiadel

capturar o valor selecionado no checkbox do grid

Recommended Posts

Essa é uma ilustração da aplicação a qual estou desenvolvendo:

 

Imagem Postada

 

1º - Eu seleciono um aviso no primeiro combo, e é exibido no panel abaixo o conteúdo do aviso

2º - Nos tres combos abaixo eu seleciono os parametros para a busca

3º - Clicando em buscar é exibido os alunos de acordo com os parametros selecionados no gridview

4º - Seleciono atraves do checkbox os alunos para qual dever aparecer esse aviso, e cadastro na base de dados sql.

 

Minha dúvida é como pegar o codigo do aluno selecionado ou dos alunos selecionado(pq pode ser mais de um)no checkbox e gravar no banco associado com o id do aviso tbm.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer algo assim no botão:

string idAviso = dropDown.SelectedValue;
foreach (GridViewRow gvr in this.gvDados.Rows)
{
	string idAluno = gvr.Cells[0].Text;
	bool check = (gvr.FindControl("IdCheckBox") as CheckBox).Checked;
	if (check)
	{ 
		//Insere na base de dados;
	}
}
Precisa mudar o nome do checkbox que está na grid e do dropdown de aviso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer algo assim no botão:

string idAviso = dropDown.SelectedValue;
foreach (GridViewRow gvr in this.gvDados.Rows)
{
	string idAluno = gvr.Cells[0].Text;
	bool check = (gvr.FindControl("IdCheckBox") as CheckBox).Checked;
	if (check)
	{ 
		//Insere na base de dados;
	}
}
Precisa mudar o nome do checkbox que está na grid e do dropdown de aviso.

isso se aplica tbm se eu clicar no checkbox q esta no header do grid, pois eles tem nomes diferentes???

Compartilhar este post


Link para o post
Compartilhar em outros sites

O checkbox do header vai selecionar todos os da grid, certo?

Então não vai mudar nada, porque o código que eu passei vai varrer todas as linhas da grid, indepentende se o usuário clicou no header ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O checkbox do header vai selecionar todos os da grid, certo?

Então não vai mudar nada, porque o código que eu passei vai varrer todas as linhas da grid, indepentende se o usuário clicou no header ou não.

qual parametro eu pego na instrucao sql, para pegar o codigo?

mais uma coisa q acho q esqueci de comentar, o valor q eu preciso gravar n é o valor do checkbox e sim o da primeira coluna do grid

Compartilhar este post


Link para o post
Compartilhar em outros sites

pegar que código?

 

essa linha:

string idAluno = gvr.Cells[0].Text;
Vai pegar o valor da primeira coluna, é esse valor que voce joga no sql.

O checkbox que eu usei ali era só pra saber se está selecionado ou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pegar que código?

 

essa linha:

string idAluno = gvr.Cells[0].Text;
Vai pegar o valor da primeira coluna, é esse valor que voce joga no sql.

O checkbox que eu usei ali era só pra saber se está selecionado ou não.

 

tah dizendo q A conversão do tipo 'CheckBox' no tipo 'Boolean' não é válida.

mais uma coisa esse codigo é C# e eu preciso em vb, desculpe n ter avisado antes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, como você está fazendo o DataBind no grid view?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, como você está fazendo o DataBind no grid view?

atraves dos parametros da busca

ele n esta pegando o valor da primeira coluna

 

Protected Sub btnCadastrar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnCadastrar.Click

		Dim conexao As New Data.SqlClient.SqlConnection("conexao")
		Dim comando As New Data.SqlClient.SqlCommand
		Dim cadastrar As Data.SqlClient.SqlDataReader

		For Each gvr In Me.gvConsulta.Rows
			Dim idAluno As String = gvr.Cells(0).Text
			Dim check As CheckBox = gvr.FindControl("chkSelect")

			If check.Checked Then
				comando.Connection = conexao
				conexao.Open()
				comando.CommandText = "Insert into aviso_aluno(al_codigo, codigo_aviso) values ('" & idAluno & "','" & ddl_aviso.SelectedValue & "')"
				cadastrar = comando.ExecuteReader()
				cadastrar.Read()
				conexao.Close()
			End If
		Next

	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

A primeira coluna é o checkbox né?

Então você precisa pegar o da segunda coluna:

Dim idAluno As String = gvr.Cells(1).Text
E outra, use comando.ExecuteNonQuery() quando for: Update,Insert,Delete.

o comando.ExecuteReader() deve ser usado somente quando for Select.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A primeira coluna é o checkbox né?

Então você precisa pegar o da segunda coluna:

Dim idAluno As String = gvr.Cells(1).Text
E outra, use comando.ExecuteNonQuery() quando for: Update,Insert,Delete.

o comando.ExecuteReader() deve ser usado somente quando for Select.

agora funcionou

mas pra usar comando.ExecuteNonQuery()

preciso alterar essa linha:

Dim cadastrar As Data.SqlClient.SqlDataReader

correto?o q eu coloco???

Compartilhar este post


Link para o post
Compartilhar em outros sites

cintia para executar comandos de insert, update e delete no banco utilize o ExecuteNonQuery.

 

Abraços...

mas pra usar comando.ExecuteNonQuery()

tenho q mudar essa declaracao, senao da erro e o q eu coloco?

Dim cadastrar As Data.SqlClient.SqlDataReader

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode remover essa linha.

E para executar faça apenas:

comando.ExecuteNonQuery()
Não precisa jogar o valor retornado em variável.

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.