DATAGRIDVIEW ORDENACAO

PERCIFILHO 11/10/2011 13:59:25
#386414
Boa tarde, amigos.
No meeu DatagridView, eu coloquei as colunas todas com a propriedade SortMode=NotSortable.
Porém, quando eu dou duplo clique na coluna dela, me aparece um erro.
Creio que deve ser porque eu tenho uma rotina no evento CellDoubleClick do DataGridView para me mostrar os dados em outro form.
Como faço para corrigir esse erro?

Até mais.
ALTAIR148 11/10/2011 14:13:57
#386418
Boa tarde,

Amigo primeiramente, qual erro? Segundo, qual código está utilizando?

Até mais.
PERCIFILHO 11/10/2011 14:24:54
#386422
Então vamos lá:

No evento CellDoubleClick do DataGridView, para clicar no registro e mostrar os dados no formulário de cadastro:

Private Sub DgvCidades_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DgvCidades.CellDoubleClick
[ô] se não houver registros no DataGridView, não faz nada
If DgvCidades.Rows.Count = 0 Then Exit Sub
[ô] passa o valor da célula seleiconada para o controle
Cidades.TxtCodigo.Text = DgvCidades.Rows(e.RowIndex).Cells(0).Value
indice = e.RowIndex
[ô] estabelece a conexão
Dim con As New OleDbConnection(conexao)
Dim cmdcidades As OleDbCommand
[ô] abre a conexão
con.Open()
[ô] consulta sql para ver se existe o registro selecionado
cmdcidades = New OleDbCommand([Ô]SELECT * FROM Cidades WHERE codigo = [Ô] & Cidades.TxtCodigo.Text, con)
Dim drcidades As OleDbDataReader = cmdcidades.ExecuteReader
[ô] se houver registro selecionado, transfere os valores para o formulário de cadastro
If drcidades.Read = True Then
If modoconsulta = [Ô]Cidades[Ô] Then
Cidades.TxtNome.Text = drcidades.Item([Ô]nome[Ô])
Cidades.CmbUf.Text = drcidades.Item([Ô]uf[Ô])
ElseIf modoconsulta = [Ô]Empresas[Ô] Then
Empresas.TxtCodigoCidade.Text = drcidades([Ô]codigo[Ô])
Empresas.TxtNomeCidade.Text = drcidades.Item([Ô]nome[Ô])
con.Close()
[ô] se não houver o registro selecionado, emite mensagem
Else
MsgBox([Ô]Cidade não cadastrada[Ô], MsgBoxStyle.Critical, [Ô]Erro de consulta[Ô])
con.Close()
Exit Sub
End If
End If
[ô] habilita/desabilita botões do menu
Cidades.MnuNovo.Enabled = False
Cidades.MnuSalvar.Enabled = False
Cidades.MnuCancelar.Enabled = True
Cidades.MnuEditar.Enabled = True
Cidades.MnuExcluir.Enabled = True
Cidades.MnuConsultar.Enabled = True
Cidades.MnuFechar.Enabled = False
[ô] fecha o formulário de consulta
Me.Close()
End Sub

Quando clico no cabeçalho do DataGridView, aparece o erro.

ALTAIR148 11/10/2011 14:30:16
#386424
Resposta escolhida
Amigo, debuga o seu código ai e veja a linha que está dando erro, verifica se é essa:

  Cidades.TxtCodigo.Text = DgvCidades.Rows(e.RowIndex).Cells(0).Value
indice = e.RowIndex


Até mais.
ALTAIR148 11/10/2011 14:41:59
#386426
Cara, deixa eu ver se entendi aqui direito, você quer clicar duas vezes em uma linha e pegar o registro dela e passar para o segundo form, certo?
Se for é bem simples, troca a linha abaixo:

Cidades.TxtCodigo.Text = DgvCidades.Rows(e.RowIndex).Cells(0).Value
indice = e.RowIndex


Por

 Cidades.TxtCodigo.Text =  Cidades.TxtCodigo.Text = dgvCidades.CurrentRow.Cells(0).Value


Isso acho que resolve o seu problema.

Até mais.




PERCIFILHO 11/10/2011 14:43:38
#386427
é, amigo, é essa linha mesmo. Algo errado com ela?
ALTAIR148 11/10/2011 14:52:06
#386428
Citação:

:
Cara, deixa eu ver se entendi aqui direito, você quer clicar duas vezes em uma linha e pegar o registro dela e passar para o segundo form, certo?
Se for é bem simples, troca a linha abaixo:


Cidades.TxtCodigo.Text = DgvCidades.Rows(e.RowIndex).Cells(0).Value
indice = e.RowIndex


Por

 Cidades.TxtCodigo.Text =  Cidades.TxtCodigo.Text = dgvCidades.CurrentRow.Cells(0).Value


Isso acho que resolve o seu problema.

Até mais.




PERCIFILHO 11/10/2011 15:27:03
#386433
Valeu, amigo, agora o que acontece é o seguinte:
quando eu clico no cabeçalho do DataGridView, o erro não ocorre, porém ele joga os dados para o outro form, com o registro que está selecionado.
Eu teria que clicar no cabeçalho e não acontecer nada.

Tem como?
ALTAIR148 11/10/2011 16:23:17
#386440
Citação:

quando eu clico no cabeçalho do DataGridView, o erro não ocorre, porém ele joga os dados para o outro form, com o registro que está selecionado.


é amigo eu até tinha reparado nisso.

Citação:

Eu teria que clicar no cabeçalho e não acontecer nada.

Tem como?



Essa eu vo ficar te devendo, vou dar uma olhada aqui, qualquer coisa eu posto aqui...

Até mais.

PERCIFILHO 11/10/2011 16:45:35
#386447
Valeu, amigo. Muito obrigado.

Até mais.
Tópico encerrado , respostas não são mais permitidas