none
Ordenar datatable ou datagridview RRS feed

  • Pergunta

  • Dim dt As New DataTable("Resumo") dt.Columns.Add("codcli", GetType(String)) dt.Columns.Add("ativo", GetType(String)) dt.Columns.Add("qtd", GetType(Integer)) dt.Columns.Add("vldisp", GetType(Double)) dt.Columns.Add("vltot", GetType(Double)) ''ADICIONAR AS LINHAS NA TABELA For idt = 0 To DGresumo2.Rows.Count - 2 If DGresumo2.Item(3, idt).Value = 0 Then dt.Rows.Add(New Object() {DGresumo2.Item(0, idt).Value, DGresumo2.Item(1, idt).Value, DGresumo2.Item(2, idt).Value, DGresumo2.Item(3, idt).Value.ToString, DGresumo2.Item(4, idt).Value.ToString}) Else dt.Rows.Add(New Object() {"SALDO", "PROJETADO", DGresumo2.Item(0, idt).Value, DGresumo2.Item(3, idt).Value.ToString}) dt.Rows.Add(New Object() {"SALDO", "HOJE", DGresumo2.Item(0, idt).Value, DGresumo2.Item(4, idt).Value.ToString}) End If Next

    Pessoal preciso ordenar o datagrid antes de incluir os dados dele no datatable, ou se tem alguma forma sem ser por dataview de ordenar o datatable?
    sexta-feira, 22 de março de 2013 14:07

Respostas

  • Entendi...

    Você poderia fazer o seguinte:

    Criar um novo campo chamado codcliOrdem por exemplo, popular esse campo com o código do cliente quando forem os valores normais, e código do cliente + "Saldo" (valores concatenados) quando for o saldo do cliente e ordenar o grid por esse campo.

    Poderia postar o layout (printScreen) que você quer?


    Carlos Eduardo Ferreira

    • Marcado como Resposta RJCERRI sexta-feira, 22 de março de 2013 19:09
    sexta-feira, 22 de março de 2013 17:50
  • O código 9251 vem primeiro que o 9105 porque você fez uma ordenação decrescente ("DESC"), para uma ordenação crescente utiliza "ASC" ou nada.

    dt.DefaultView.Sort = "codcli ASC"

    ou

    dt.DefaultView.Sort = "codcli"


    Carlos Eduardo Ferreira

    sexta-feira, 22 de março de 2013 18:41

Todas as Respostas

  • Como você vai ordenar um datagrid sem dados? não tem como, pois não há registros no mesmo.

    Veja esse link:

    http://www.adathedev.co.uk/2010/02/sorting-datatable-linq-performance.html

    • Sugerido como Resposta Vitor Mendes sexta-feira, 22 de março de 2013 14:19
    sexta-feira, 22 de março de 2013 14:14
  • Mas ele tem dados, eu alimento o datatable com os dados que estão no datagrid. Os dados que estão no datagrid eu coloquei na mão.
    sexta-feira, 22 de março de 2013 14:20
  • Amigo,

    Segue o código para ordenar o datatable:

    datatable.DefaultView.Sort = "CAMPO ASC";

    Para utilizar os dados ordenados (existem outras possibilidades):

    gridview.DataSource = datatable.DefaultView.ToTable();

    Veja se te ajuda,

    Abraço


    Carlos Eduardo Ferreira

    • Sugerido como Resposta Ninho_Blink sexta-feira, 22 de março de 2013 14:31
    sexta-feira, 22 de março de 2013 14:22
  • Show, vou guardar essa dica pra ordenar o datatable, mas vi que vou precisar mesmo é ordenar o datagrid que alimenta do datatable, porque quando coloco essa linha na ordenação todas essas linhas com SALDO fica no final

    dt.Rows.Add(New Object() {"SALDO", "PROJETADO", DGresumo2.Item(0, idt).Value, DGresumo2.Item(3, idt).Value.ToString})

    sexta-feira, 22 de março de 2013 14:46
  • Qual é a ordem que você precisa?

    Carlos Eduardo Ferreira

    sexta-feira, 22 de março de 2013 15:36
  • Pela coluna cod_cli(a primeira), nessa imagem mostra como fica quando uso o comando pra ordenar o datatable. 

    sexta-feira, 22 de março de 2013 16:05
  • Como você quer que seja exibido? Esse Saldo deveria ficar no final de um grupo de registros, é isso?!


    Carlos Eduardo Ferreira

    sexta-feira, 22 de março de 2013 16:09
  • É, desculpa vou mostrar melhor eu tenho um datagrid que recebe de duas tabelas esses dados, quando ele recebe fica tudo em ordem de registro. Assim faz varios grupos de registros, ai eu preciso ordenar pra que todos codigos daquele cliente faça um grupo, ai no final eu vou colocar os saldos.
    sexta-feira, 22 de março de 2013 17:34
  • Entendi...

    Você poderia fazer o seguinte:

    Criar um novo campo chamado codcliOrdem por exemplo, popular esse campo com o código do cliente quando forem os valores normais, e código do cliente + "Saldo" (valores concatenados) quando for o saldo do cliente e ordenar o grid por esse campo.

    Poderia postar o layout (printScreen) que você quer?


    Carlos Eduardo Ferreira

    • Marcado como Resposta RJCERRI sexta-feira, 22 de março de 2013 19:09
    sexta-feira, 22 de março de 2013 17:50
  • Blz, sua dica ficou show, ordenei assim. Mas esse codigo entende que 9251 vem primeiro que 9105 e ele faz isso com outros códigos taMBÉM.

    dt.DefaultView.Sort = "codcli DESC"

    sexta-feira, 22 de março de 2013 18:35
  • O código 9251 vem primeiro que o 9105 porque você fez uma ordenação decrescente ("DESC"), para uma ordenação crescente utiliza "ASC" ou nada.

    dt.DefaultView.Sort = "codcli ASC"

    ou

    dt.DefaultView.Sort = "codcli"


    Carlos Eduardo Ferreira

    sexta-feira, 22 de março de 2013 18:41
  • Obrigado pela força amigo, bom final de semana.

    Abs

    sexta-feira, 22 de março de 2013 19:09
  • Falou!

    Valeu! Pra você também!

    Abraço!


    Carlos Eduardo Ferreira

    sexta-feira, 22 de março de 2013 19:35