Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

cintiadel

[Resolvido] Atualizar dados com GridView com checkbox

Recommended Posts

desenvolvi minha aplicação me baseando nesse tutorial :

http://www.macoratti.net/08/03/aspn_erg.htm

só que minha rotina é para atualizar a tabela, com os aprovados.

 

se eu tiro o sqldatasource no grid, ele me exibe o erro:

A DataSourceID de 'GridView1' deve ser a identificação de um controle do tipo IDataSource. Um controle com identificação 'SqlDataSource1' não pôde ser encontrado.

 

e se eu coloco sqldatasource no grid, ele me exibe o erro:

DataSource e DataSourceID estão definidos em 'GridView1'. Remova uma definição.

E nesse caso n faço a minima ideia de onde está isso, para retirar.

 

conto com a ajuda de vocês mas uma vez

Share this post


Link to post
Share on other sites

Eu não achei neste artigo onde ele informa o DataSourceID, você seguiu fielmente o artigo?

No artigo eu só achei o momento em que ele informa o DataSource.

 

Abraços...

então segui sim só troquei o metódo para update, tentei colocar um sqldatasourece, mas tbm da erro.

por falar em update n to consegui colocar a instrução direito tbm, n sei como colocar os todos parametros, nessa linha: Dim cmd As New SqlCommand("Update tabela where id=@id", Conn)

Share this post


Link to post
Share on other sites

Então não seguiu. ;)

Por que precisa de um SqlDataSource? Não tem necessidade.

 

Abraços...

eu coloquei pra ver se parava de dar o erro, mas ai começou a dar outra mensagem de erro, como relatei acima.

Share this post


Link to post
Share on other sites

Então não seguiu. ;)

Por que precisa de um SqlDataSource? Não tem necessidade.

Abraços...

estou como o seguinte problema no grid, se eu marco os checkbox ele atualiza na base, mas se eu desmarco os checkbox nao atualiza. segue o , deveria mudar o status para false, segue meu codigo:

 

Imports System.Data.SqlClient

Partial Class _Default
	Inherits System.Web.UI.Page
	Dim strConexao As String

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

		strConexao = ConfigurationManager.ConnectionStrings("conConnectionString").ConnectionString
		If Not Page.IsPostBack Then
			exibeGrid()
		End If
	End Sub

	Protected Sub btn_atualiza_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_atualiza.Click
		Atualiza()
	End Sub
	Sub exibeGrid()
		Dim Conn As New SqlConnection(strConexao)
		Dim dr As SqlDataReader
		Dim mySQL As String

		mySQL = "SELECT [id], [nome], [opcao], [status] FROM [tabela]"

		Dim cmd As New SqlCommand(mySQL, Conn)
		Conn.Open()

		dr = cmd.ExecuteReader
		GridView1.DataSource = dr
		GridView1.DataBind()

		Conn.Close()
	End Sub

	Sub Atualiza()
		Dim i As Integer
		For i = 0 To GridView1.Rows.Count - 1
			Dim dgItem As GridViewRow = GridView1.Rows(i)
			Dim lblid As Label = CType(dgItem.FindControl("lblid"), Label)
			Dim cb As CheckBox = CType(dgItem.FindControl("ckb1"), CheckBox)
			If cb.Checked Then
				AtualizaRegistro(CInt(lblid.Text))
			End If
		Next i
		exibeGrid()
	End Sub
	Sub AtualizaRegistro(ByVal intAln As Integer)
		Dim Conn As New SqlConnection(strConexao)
		Dim cmd As New SqlCommand("Update tabela set status=@status where id=@id", Conn)
		cmd.Parameters.Add(New SqlParameter("@id", intAln))
		cmd.Parameters.Add(New SqlParameter("@status", intAln))
		Conn.Open()
		cmd.ExecuteNonQuery()
		Conn.Close()
	End Sub

End Class

Share this post


Link to post
Share on other sites

Você esta fazendo uma condição:

If cb.Checked Then
	AtualizaRegistro(CInt(lblid.Text))
End If

Se você quer ambos os casos não pode fazer essa condição.

 

Abraços...

se eu tiro essas 3 linhas n atualiza

e se deixo so AtualizaRegistro(CInt(lblid.Text)) ele atualiza todos os registros

Share this post


Link to post
Share on other sites

Então além desse if, faça outro if verificando se não esta checado, ae faz o que você quer fazer.

 

Abraços...

o problema é justo mente esse n to sabendo verificar ele qdo n esta checado, como fica a sintaxe, pode me ajudar?

Share this post


Link to post
Share on other sites

Tenta assim:

If Not cb.Checked Then
	'Seu Código
End If

Abraços...

continua colocando todos como True

segue o código:

Sub Atualiza()
		Dim i As Integer
		For i = 0 To GridView1.Rows.Count - 1
			Dim dgItem As GridViewRow = GridView1.Rows(i)
			Dim lblid As Label = CType(dgItem.FindControl("lblid"), Label)
			Dim cb As CheckBox = CType(dgItem.FindControl("ckb1"), CheckBox)
			If cb.Checked = True Then
				AtualizaRegistro(CInt(lblid.Text))
			ElseIf Not cb.Checked Then
				AtualizaRegistro(CInt(lblid.Text))
			End If
		Next i

Share this post


Link to post
Share on other sites

Mas dentro do outro if você mandou fazer a mesma coisa. Você deve mandar executar ações diferentes. O seu AtualizaRegistro deve estar marcando como true, cria o que não faz isso.

 

Abraços...

não to conseguindo não, tem como verificar o código que postei um pouca assima onde esta o codigo da funcao atualizaregistro?

obrigada

Share this post


Link to post
Share on other sites

No seu AtualizaRegistro cria um outro parâmetro para você informar se é pra marcar ou desmarcar.

Ae dependendo do if que ele entrar você passa o valor que você quer para a coluna status.

 

Abraços...

como já disse, me perdoe a ignorância, mas só sei fazer isso qdo esá checado, e não qdo está desmarcado.

se n for incomodo , poste um exemplo, se n for abusar

Share this post


Link to post
Share on other sites

Não testei nada, to fazendo de cabeça aqui, deve ficar mais ou menos assim:

 

Dim i As Integer
		For i = 0 To GridView1.Rows.Count - 1
			Dim dgItem As GridViewRow = GridView1.Rows(i)
			Dim lblid As Label = CType(dgItem.FindControl("lblid"), Label)
			Dim cb As CheckBox = CType(dgItem.FindControl("ckb1"), CheckBox)
			If cb.Checked = True Then
				AtualizaRegistro(CInt(lblid.Text), 1)
			ElseIf Not cb.Checked Then
				AtualizaRegistro(CInt(lblid.Text), 0)
			End If
		Next i

Sub AtualizaRegistro(ByVal intAln As Integer, ByVal status As Integer)
		Dim Conn As New SqlConnection(strConexao)
		Dim cmd As New SqlCommand("Update tabela set status=@status where id=@id", Conn)
		cmd.Parameters.Add(New SqlParameter("@id", intAln))
		cmd.Parameters.Add(New SqlParameter("@status", status))
		Conn.Open()
		cmd.ExecuteNonQuery()
		Conn.Close()
	End Sub

Abraços...

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.