Usuário com melhor resposta
DataGridView e CheckBox

Pergunta
-
Boa noite !
Eu tenho um Datagridview com checkbox, eles assumem os valores true ou false, e no botão (confirmar) eu confirmo as alteraçoes no banco de dados.
como faço isso? no codigo que eu tenho neste momento as vezes ele grava e as vezes não esta a gravar as alteraçoes ....
qual a maneira correta de trabalhar com um datagridview com checkbox?
alguem me ajuda a resolver isto?
obrigado...
Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server
Respostas
-
daniel, bom dia.
Dentro da itemtemplate coloque o checkbox
<asp:checkbox id="CheckBox1" runat="server" oncheckedchanged="CheckBox1_CheckedChanged" xmlns:asp="#unknown" />
No seu aspx.cs
protected void CheckBox1_CheckedChanged(object sender, EventArgs e) { CheckBox chk = (CheckBox)sender; GridViewRow gr = (GridViewRow)chk.Parent.Parent; lblmsg.Text = GridView1.DataKeys[gr.RowIndex].Value.ToString(); //lblmsg.Text = "Hello"; }
Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com
- Sugerido como Resposta Rafa sibeira segunda-feira, 17 de março de 2014 13:15
- Marcado como Resposta danielbeneditorosa segunda-feira, 17 de março de 2014 21:53
-
Bom exemplificando seria mais ou menos assim:
Tela:
Quando Clicar no Confirmar por exemplo a rotina seria assim:
Private Sub BtuConfirmar_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim Codigo As Integer = 0 Dim Status As Boolean = False For Each row As DataGridViewRow In DataGridView2.Rows If (Integer.TryParse(row.Cells(0).Value.ToString(), Codigo) AndAlso Boolean.TryParse(row.Cells(2).Value.ToString(), Status)) Then GravarNoBanco(Codigo, Status) 'Sub que grava no banco ... End If Next End Sub Public Sub GravarNoBanco(Codigo As Integer, Status As Boolean) 'programe aqui a rotina de gravação ... End Sub
Quanto clicar no botão ele vai pegar o cell 0 e pegar o Codigo e a cell 2 que é o status para que os mesmo serão gravados na base de dados na sub GravarNoBanco ...
Agora você deve adaptar ao seu código ai !!!
- Editado Fulvio Cezar Canducci Dias segunda-feira, 17 de março de 2014 13:29
- Marcado como Resposta danielbeneditorosa segunda-feira, 17 de março de 2014 21:53
Todas as Respostas
-
-
daniel, bom dia.
Dentro da itemtemplate coloque o checkbox
<asp:checkbox id="CheckBox1" runat="server" oncheckedchanged="CheckBox1_CheckedChanged" xmlns:asp="#unknown" />
No seu aspx.cs
protected void CheckBox1_CheckedChanged(object sender, EventArgs e) { CheckBox chk = (CheckBox)sender; GridViewRow gr = (GridViewRow)chk.Parent.Parent; lblmsg.Text = GridView1.DataKeys[gr.RowIndex].Value.ToString(); //lblmsg.Text = "Hello"; }
Se a resposta foi útil por favor qualifique. Italo Biguzi Duarte, Desenvolvedor ASP.NET C#, Italo.biguzzi@gmail.com
- Sugerido como Resposta Rafa sibeira segunda-feira, 17 de março de 2014 13:15
- Marcado como Resposta danielbeneditorosa segunda-feira, 17 de março de 2014 21:53
-
Bom exemplificando seria mais ou menos assim:
Tela:
Quando Clicar no Confirmar por exemplo a rotina seria assim:
Private Sub BtuConfirmar_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim Codigo As Integer = 0 Dim Status As Boolean = False For Each row As DataGridViewRow In DataGridView2.Rows If (Integer.TryParse(row.Cells(0).Value.ToString(), Codigo) AndAlso Boolean.TryParse(row.Cells(2).Value.ToString(), Status)) Then GravarNoBanco(Codigo, Status) 'Sub que grava no banco ... End If Next End Sub Public Sub GravarNoBanco(Codigo As Integer, Status As Boolean) 'programe aqui a rotina de gravação ... End Sub
Quanto clicar no botão ele vai pegar o cell 0 e pegar o Codigo e a cell 2 que é o status para que os mesmo serão gravados na base de dados na sub GravarNoBanco ...
Agora você deve adaptar ao seu código ai !!!
- Editado Fulvio Cezar Canducci Dias segunda-feira, 17 de março de 2014 13:29
- Marcado como Resposta danielbeneditorosa segunda-feira, 17 de março de 2014 21:53
-
boa noite Fulvio, Obrigado pela resposta, vou te passar a estrutura da tabela:
CREATE TABLE [dbo].[PermiUser](
[CODIGO_EMPRESA] [varchar](10) NOT NULL,
[CODIGO_PERF_USER] [int] NOT NULL,
[CODIGO_FUNÇÃO_USER] [int] NOT NULL,
[INSERIR] [bit] NOT NULL,
[ACTUALIZAR] [bit] NOT NULL,
[ELIMINAR] [bit] NOT NULL,
[CONSULTAR] [bit] NOT NULL,
[IMPRIMIR] [bit] NOT NULL,
CONSTRAINT [PK_PermiUser] PRIMARY KEY CLUSTERED
(
[CODIGO_EMPRESA] ASC,
[CODIGO_PERF_USER] ASC,
[CODIGO_FUNÇÃO_USER] ASC
E abaixo esta o codigo actual do formulario com o datagridview:
Public Class FrmListaPermissoesUsiarios
Dim ListaGeralPermissoes As List(Of DAL.LT_PermUsResult)
Private Sub FrmListaPermissoesUsiarios_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DGVListaPermissoes.Columns(0).DataPropertyName = "CODIGO_EMPRESA"
DGVListaPermissoes.Columns(1).DataPropertyName = "CODIGO_PERF_USER"
DGVListaPermissoes.Columns(2).DataPropertyName = "CODIGO_FUNÇÃO_USER"
DGVListaPermissoes.Columns(3).DataPropertyName = "INSERIR" 'true ou false
DGVListaPermissoes.Columns(4).DataPropertyName = "ACTUALIZAR" 'True ou False
DGVListaPermissoes.Columns(5).DataPropertyName = "ELIMINAR" ' True ou False
DGVListaPermissoes.Columns(6).DataPropertyName = "CONSULTAR" ' True ou false
DGVListaPermissoes.Columns(7).DataPropertyName = "IMPRIMIR" 'True ou False
'aqui usamos uma consulta linque para fazer o preenchimento do datagridview
Using contexto As New DAL.DANIROSADataContext
ListaGeralPermissoes = contexto.LT_PermUs.ToList
End Using
CarregarGridPermissoes(ListaGeralPermissoes)
End Sub
'Aqui a rotina que vai fazer o carregamento dos dados no datagridview
Private Sub CarregarGridPermissoes(Listapermissoes As IList(Of DAL.LT_PermUsResult))
DGVListaPermissoes.DataSource = Listapermissoes
DGVListaPermissoes.Update()
End Sub
Private Sub DGVListaPermissoes_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGVListaPermissoes.CellClick
'marcar e desmarcar o check box selecionado
DGVListaPermissoes.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = _
Not DGVListaPermissoes.Rows(e.RowIndex).Cells(e.ColumnIndex).Value
End Sub
Private Sub BtnConfirmarPermissoes_Click(sender As Object, e As EventArgs) Handles BtnConfirmarPermissoes.Click
If MessageBox.Show("Tem certeza que deseja actualizar este registro ?", "Actualizar", MessageBoxButtons.YesNo, MessageBoxIcon.Question).Equals(DialogResult.Yes) Then
Try
Dim ctxt As BLL.DANIROSA.PermissoesBLL
ctxt = New BLL.DANIROSA.PermissoesBLL
Dim pe As New DAL.PermiUser
pe.CODIGO_EMPRESA = DGVListaPermissoes.CurrentRow.Cells(0).Value.ToString
pe.CODIGO_PERF_USER = DGVListaPermissoes.CurrentRow.Cells(1).Value.ToString
pe.CODIGO_FUNÇÃO_USER = DGVListaPermissoes.CurrentRow.Cells(2).Value.ToString
pe.INSERIR = DGVListaPermissoes.CurrentRow.Cells(3).Value.ToString
pe.ACTUALIZAR = DGVListaPermissoes.CurrentRow.Cells(4).Value.ToString
pe.ELIMINAR = DGVListaPermissoes.CurrentRow.Cells(5).Value.ToString
pe.CONSULTAR = DGVListaPermissoes.CurrentRow.Cells(6).Value.ToString
pe.IMPRIMIR = DGVListaPermissoes.CurrentRow.Cells(7).Value.ToString
ctxt.UpdatPermissoes(pe)
MessageBox.Show("Registo actualizado com sucesso : ", "Actualizar", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)
End Try
End If
End Sub
End Class
Reg. este é o actual codigo do formulario...
Daniel Rosa Iniciante de programação em vb.net, linq sql e Sql server
-