CHECKBOX EM DATAGRIDVIEW

ARNALDOCRUZ 04/10/2010 08:18:23
#354344
Bom dia colegas

estou preenchendo um datagridview como abaixo

sqlTabela = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Estilo From tblCheque Where Tipo=1 and Estilo=[Ô] & situ
DA = New FbDataAdapter(sqlTabela, Fbconn)
DA.Fill(ds2, [Ô]tblCheque[Ô])
Me.DataGridView2.DataSource = ds2.Tables([Ô]tblCheque[Ô])

Redimensiono as colunas

Me.DataGridView2.Columns(0).Width = 80
Me.DataGridView2.Columns(1).Width = 80
Me.DataGridView2.Columns(2).Width = 123
Me.DataGridView2.Columns(3).Width = 90
Me.DataGridView2.Columns(4).Width = 80

Renomeio o cabeçalho das colunas

Me.DataGridView2.Columns(0).HeaderText = [Ô]EMISSÃO[Ô]
Me.DataGridView2.Columns(1).HeaderText = [Ô]CHEQUE[Ô]
Me.DataGridView2.Columns(2).HeaderText = [Ô]BANCO[Ô]
Me.DataGridView2.Columns(3).HeaderText = [Ô]VENCIMENTO[Ô]
Me.DataGridView2.Columns(3).HeaderText = [Ô]VENCIMENTO[Ô]
Me.DataGridView2.Columns(4).HeaderText = [Ô]VALOR[Ô]

Alinho as colunas

Me.DataGridView2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
Me.DataGridView2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

como eu faço para colocar um checkbox depois da coluna 4 (Valor), lembrando que após eu tenho a coluna estilo que estará invisivel


Obrigado
ADHEL 04/10/2010 09:49:53
#354346
Resposta escolhida
Porque ao invés de criar um campo depois ,você não cria um campo antes
Cria um campo além desses na tabela cheques .Como booleano.
Exemplo campo cheques depositados.
Grava ele sempre como valor zero .Quando você carregar o grid ele aparecerá sempre com o checbox desmarcado.
ARNALDOCRUZ 04/10/2010 10:23:23
#354351
o que já fiz e sem sucesso

Criei uma coluna do tipo checkBox com sendo a coluna 0

Fui na tabela e criei um campo Chamado Sel tipo Varchar 1 valor=0 atualizei todas as linhas pra zero
mudei o select qlTabela = [Ô]Select Sel ,Emissao......

A coluna aparece escrito 0 e não o checkbox

Não funfou

mudei para Interger - Não funfou

Criei uma variavel do tipo Boolean

Dim Merda as Boolean = False

mudei o select qlTabela = [Ô]Select ([ô][Ô] & Merda & [Ô][ô],Emissao...

Não funfou

A coluna aparece escrito False e não o checkbox

vi um exemplo aqui no vbmania onde o campo na tabela ACCESS é boolean então bastava incluir o campo no select e pronto, só que estou usando Firebird e ele não tem campo do tipo Boolean.

LLAIA 04/10/2010 11:13:06
#354358
nunca usei esse grid, mas é possível definir a fonte de uma célula ? se der, use a fonte wingdings como fazemos no flexgrid caso o proprio grid não tenha o recurso de checkboxes. vc teria apenas que gravar o caracter correspondente ao símboo no BD
ADHEL 04/10/2010 11:26:09
#354360
Eu uso o mysql e no meu caso criei o campo pelo heidisql como tynynt qaue eu acredito que seja a mesma coisa que boolean.
E qdo carrego ele mostar no grid os campos como checbox
ARNALDOCRUZ 04/10/2010 13:10:21
#354370
Colegas se o Datagridview oferece esta opção é porque seja possivel, o problema é que no firebird não tem campo Boolean

oferece como abaixo

SMALLINT
INTEGER
BINGINT
FLOAT
DOUBLE
DECIMAL
DATE
TIME
CHAR
VARCHAR
BLOB


ADHEL 04/10/2010 14:27:11
#354375
Dei uma pesquisada na net e encontrei isso

Dim column As New DataGridViewCheckBoxColumn()
With column
.HeaderText = [Ô]Your Header Text[Ô]
.Name = [Ô]ColCheckBox[Ô]
.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
.FlatStyle = FlatStyle.Standard
.CellTemplate = New DataGridViewCheckBoxCell()
.CellTemplate.Style.BackColor = Color.Beige
End With
datagridview1.Columns.Insert(0, column)

desse jeito você consegue criar a coluna .
ARNALDOCRUZ 04/10/2010 15:22:02
#354379
Realmente insere uma coluna com Checkbox porem as outras desaparecem o grid fica com uma coluna apenas.

o datasource é perdido


ADHEL 04/10/2010 15:27:48
#354382
você fez assim?

sqlTabela = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Estilo From tblCheque Where Tipo=1 and Estilo=[Ô] & situ
DA = New FbDataAdapter(sqlTabela, Fbconn)
DA.Fill(ds2, [Ô]tblCheque[Ô])
Me.DataGridView2.DataSource = ds2.Tables([Ô]tblCheque[Ô])

Redimensiono as colunas

Me.DataGridView2.Columns(0).Width = 80
Me.DataGridView2.Columns(1).Width = 80
Me.DataGridView2.Columns(2).Width = 123
Me.DataGridView2.Columns(3).Width = 90
Me.DataGridView2.Columns(4).Width = 80

Renomeio o cabeçalho das colunas

Me.DataGridView2.Columns(0).HeaderText = [Ô]EMISSÃO[Ô]
Me.DataGridView2.Columns(1).HeaderText = [Ô]CHEQUE[Ô]
Me.DataGridView2.Columns(2).HeaderText = [Ô]BANCO[Ô]
Me.DataGridView2.Columns(3).HeaderText = [Ô]VENCIMENTO[Ô]
Me.DataGridView2.Columns(3).HeaderText = [Ô]VENCIMENTO[Ô]
Me.DataGridView2.Columns(4).HeaderText = [Ô]VALOR[Ô]

Alinho as colunas

Me.DataGridView2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
Me.DataGridView2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

Dim column As New DataGridViewCheckBoxColumn()
With column
.HeaderText = [Ô]Your Header Text[Ô]
.Name = [Ô]ColCheckBox[Ô]
.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells
.FlatStyle = FlatStyle.Standard
.CellTemplate = New DataGridViewCheckBoxCell()
.CellTemplate.Style.BackColor = Color.Beige
End With
Me.DataGridView2.Columns.Insert(5, column)


ARNALDOCRUZ 04/10/2010 17:01:59
#354385
fiz extamente como está acima e não funfou, o datasource é perdido e fica somente a coluna com o checkbox., porem fiz como abaixo utilizando um dataset e funcionou estou colocando a solução caso alguem precise.

Dim CHK As Boolean = False
Me.DataGridView2.Columns.Clear()
Me.DataGridView2.DataSource = Nothing
selcom.Connection = Fbconn
If Me.Option1.Checked = True Then
If Me.txtrodape.Text = [Ô][Ô] Then
selcom.CommandText = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Compensa,ID,OBS,IDFor,Tipo,Estilo From tblCheque Where Tipo=1 and Estilo=[Ô] & situ
Else
sqlTabela = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Compensa,ID,OBS,IDFor,Tipo,Estilo From tblCheque Where Tipo=1 And IDFor=Cast([ô][Ô] & IDFOR & [Ô][ô] As Numeric) and Estilo=[Ô] & situ
End If
ElseIf Me.Option2.Checked = True Then
If Me.txtrodape.Text = [Ô][Ô] Then
sqlTabela = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Compensa,ID,OBS,IDFor,Tipo,Estilo From tblCheque Where Tipo=0 and Estilo=[Ô] & situ
Else
sqlTabela = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Compensa,ID,OBS,IDFor,Tipo,Estilo From tblCheque Where Tipo=0 and IDFor=Cast([ô][Ô] & IDFOR & [Ô][ô] As Numeric) And Estilo=[Ô] & situ
End If
Else
If Me.txtrodape.Text = [Ô][Ô] Then
sqlTabela = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Compensa,ID,OBS,IDFor,Tipo,Estilo From tblCheque Where Estilo=[Ô] & situ
Else
selcom.CommandText = [Ô]Select Emissao,Cheque,Banco,Vencimento,Valor,Compensa,ID,OBS,IDFor,Tipo,Estilo From tblCheque Where IDFor=Cast([ô][Ô] & IDFOR & [Ô][ô] As Numeric) And Estilo=[Ô] & situ
End If
End If
Dim dt As New DataTable([Ô]Tabela[Ô])
dt.Columns.Add(New DataColumn([Ô]Emissao[Ô], (New Date).GetType()))
dt.Columns.Add(New DataColumn([Ô]Cheque[Ô], (New String([Ô][Ô])).GetType()))
dt.Columns.Add(New DataColumn([Ô]Banco[Ô], (New String([Ô][Ô])).GetType())) [ô]Aqui declaro como String
dt.Columns.Add(New DataColumn([Ô]Vencimento[Ô], (New Date).GetType()))
dt.Columns.Add(New DataColumn([Ô]Valor[Ô], (New Double).GetType()))
dt.Columns.Add(New DataColumn([Ô]Compensa[Ô], (New String([Ô][Ô])).GetType()))
dt.Columns.Add(New DataColumn([Ô]Sel[Ô], (New Boolean).GetType()))
dt.Columns.Add(New DataColumn([Ô]ID[Ô], (New Integer).GetType()))
dt.Columns.Add(New DataColumn([Ô]Obs[Ô], (New String([Ô][Ô])).GetType()))
dt.Columns.Add(New DataColumn([Ô]IDFOR[Ô], (New Integer).GetType()))
dt.Columns.Add(New DataColumn([Ô]Tipo[Ô], (New String([Ô][Ô])).GetType()))
dt.Columns.Add(New DataColumn([Ô]Estilo[Ô], (New String([Ô][Ô])).GetType()))
Dim Reader As FbDataReader
Reader = selcom.ExecuteReader()
Do While Reader.Read
Dim dr As DataRow = dt.NewRow
dr([Ô]Emissao[Ô]) = Reader([Ô]Emissao[Ô])
dr([Ô]Cheque[Ô]) = Reader([Ô]Cheque[Ô])
dr([Ô]Banco[Ô]) = Reader([Ô]Banco[Ô])
dr([Ô]Vencimento[Ô]) = Reader([Ô]Vencimento[Ô])
dr([Ô]Valor[Ô]) = FormatNumber(Reader([Ô]Valor[Ô]), 2)
dr([Ô]Compensa[Ô]) = Reader([Ô]Compensa[Ô])
dr([Ô]SEL[Ô]) = CHK
dr([Ô]ID[Ô]) = Reader([Ô]ID[Ô])
dr([Ô]Obs[Ô]) = Reader([Ô]Obs[Ô])
dr([Ô]IDFor[Ô]) = Reader([Ô]IDFor[Ô])
dr([Ô]Tipo[Ô]) = Reader([Ô]Tipo[Ô])
dr([Ô]Estilo[Ô]) = Reader([Ô]Estilo[Ô])
dt.Rows.Add(dr)
Loop
Reader.Close()
DataGridView2.DataSource = dt
Me.DataGridView2.Columns(0).Width = 80
Me.DataGridView2.Columns(1).Width = 70
If Me.Opt4.Checked = True Then
Me.DataGridView2.Columns(2).Width = 180
Else
Me.DataGridView2.Columns(2).Width = 110
End If
Me.DataGridView2.Columns(3).Width = 90
Me.DataGridView2.Columns(4).Width = 73
Me.DataGridView2.Columns(5).Width = 70
Me.DataGridView2.Columns(6).Width = 40
Me.DataGridView2.Columns(7).Width = 10
Me.DataGridView2.Columns(8).Width = 10
Me.DataGridView2.Columns(9).Width = 10
Me.DataGridView2.Columns(10).Width = 10
Me.DataGridView2.Columns(11).Width = 10
Me.DataGridView2.Columns(0).HeaderText = [Ô]EMISSÃO[Ô]
Me.DataGridView2.Columns(1).HeaderText = [Ô]CHEQUE[Ô]
Me.DataGridView2.Columns(2).HeaderText = [Ô]BANCO[Ô]
Me.DataGridView2.Columns(3).HeaderText = [Ô]VENCIMENTO[Ô]
Me.DataGridView2.Columns(4).HeaderText = [Ô]VALOR[Ô]
Me.DataGridView2.Columns(5).HeaderText = [Ô]BAIXA[Ô]
Me.DataGridView2.Columns(6).HeaderText = [Ô]SEL[Ô]
Me.DataGridView2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
Me.DataGridView2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
Me.DataGridView2.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
Me.DataGridView2.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
Me.DataGridView2.Columns.Item(4).DefaultCellStyle.Format = [Ô]#,##0.00[Ô]
If Me.Opt4.Checked = True Then
Me.DataGridView2.Columns(5).Visible = False
Else
Me.DataGridView2.Columns(5).Visible = True
End If
Me.DataGridView2.Columns(7).Visible = False
Me.DataGridView2.Columns(8).Visible = False
Me.DataGridView2.Columns(9).Visible = False
Me.DataGridView2.Columns(10).Visible = False
Me.DataGridView2.Columns(11).Visible = False
Me.DataGridView2.AllowUserToAddRows = False
Me.DataGridView2.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige
Me.DataGridView2.BackgroundColor = Me.BackColor
Me.DataGridView2.RowHeadersWidth = 20
Tópico encerrado , respostas não são mais permitidas