ALTERAR POSICAO DA LINHA NO DATAGRIDVIEW DATATABLE

MAXCIM 18/10/2011 18:53:34
#386984

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.

KERPLUNK 18/10/2011 19:08:30
#386986
Resposta escolhida
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.
MAXCIM 18/10/2011 19:13:46
#386988
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.
KERPLUNK 18/10/2011 19:27:19
#386990
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
Tópico encerrado , respostas não são mais permitidas