ALTERAR POSICAO DA LINHA NO DATAGRIDVIEW DATATABLE
Olá Amigos!
dias atras o Jonathan me passou esse codigo, que funciona perfeitamente.
Citação:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.MoveLinha(Me.DataGridView1.CurrentRow, 2)
End Sub
Public Sub MoveLinha(ByVal pLinha As DataGridViewRow, ByVal pPosicao As Integer)
Me.DataGridView1.Rows.Remove(pLinha)
Me.DataGridView1.Rows.Insert(pPosicao, pLinha)
End Sub
porem hoje eu preciso editar a posisão de linhas em um datagridview preenchido por um datatable e me aparece a mensagem a seguir.
alguem sabe como resolver essa?
Citação:Não é possÃvel adicionar linhas programaticamente à coleção de linhas de DataGridView quando o controle é limitado por dados.
A mensagem é clara: Se a fonte de dados do gridview é limitada por dados(no seu caso, um datatable), vc não pode adicionar linhas nele. O que vc pode fazer, é adicionar a linha que quiser no datatable e preencher o grid novamente. Ou melhor ainda, transformar o seu datatable em uma lista genérica de classes e manipular essa lista.
oi Kerplunk, obrigado pela resposta...
pode me dar uma ideia de como editar a posição dos registros dentro de um datatbale? ou como gerar essa lista Generica?
apos preencher o grid.. eu fecho o datatable... vou editar a ordem dos registros e salvar em seguida.
pode me dar uma ideia de como editar a posição dos registros dentro de um datatbale? ou como gerar essa lista Generica?
apos preencher o grid.. eu fecho o datatable... vou editar a ordem dos registros e salvar em seguida.
1 - A fonte de dados, depois de gerada, não deve ser alterada. O que vc faz, é criar procedimentos que geram a fonte de dados pronta.
2 - Uma lista genérica é bastante simples:
Vc cria uma classe que as propriedades sejam as mesmas e com os mesmos tipos de dados do que vc quer exibir(melhor se a classe contemplar todos os campos da tabela. Em seguida, cria um método que abre a tabela, e percorrendo-a, adicione os dados como Ãtens dessa lista genérica. Tem um exemplo super simples aqui. Esse exemplo os Ãtens são adicionados manualmente, no seu caso, serão os dados da tabela. E outra sugestão é usar um DataReader ao invés de um DataTable. O DataReader é pelo menos 2X mais rápido para leitura de dados, comparado ao DataTable
2 - Uma lista genérica é bastante simples:
Vc cria uma classe que as propriedades sejam as mesmas e com os mesmos tipos de dados do que vc quer exibir(melhor se a classe contemplar todos os campos da tabela. Em seguida, cria um método que abre a tabela, e percorrendo-a, adicione os dados como Ãtens dessa lista genérica. Tem um exemplo super simples aqui. Esse exemplo os Ãtens são adicionados manualmente, no seu caso, serão os dados da tabela. E outra sugestão é usar um DataReader ao invés de um DataTable. O DataReader é pelo menos 2X mais rápido para leitura de dados, comparado ao DataTable
Tópico encerrado , respostas não são mais permitidas