none
Datagrid não mantem o filtro da coluna quando é atualizado pelo ObservableCollection RRS feed

  • Pergunta

  • Olá amigos.

    Estou preenchendo meu datagrid com classes de uma observable collection.

    As atualizações ocorrem normalmente, por causa da INotifyPropertyChange.... está tudo ok.

    Só q quando eu filtro uma coluna, por exemplo, clico no header da coluna "Valor" pra mostrar os valores já encontrados.... ele não mantem esse filtro nas proximas atualizaões do observablecollection.

    Os valores continuam a ser atualizados e exibidos no grid normalmente, mas aparecem no final, no meio, alguns por ali outros aqui.... não permanecem encadeados um embaixo do outro na coluna.

    Como fazer pra q, ao usarmos o filtro da coluna ela tb vá colocando um embaixo do outro à medida que os registros forem atualizados, respeitando a ordem do filtro (asc ou desc)?


    Se a resposta foi útil, por favor marque como útil. Leia a bíblia.

    segunda-feira, 5 de agosto de 2013 13:30

Todas as Respostas

  • Alguém tem alguma ideia de como posso resolver isso?
    Estou usando ObservableCollection de acordo com este tutorial:
    http://social.msdn.microsoft.com/Forums/pt-BR/1a6ec7d2-8fc3-418f-a5f2-e300f04804c5/classe-datagrid-bnding#13d73ad0-f279-4166-a7f2-7033a3f04bba

    Se a resposta foi útil, por favor marque como útil. Leia a bíblia.

    terça-feira, 6 de agosto de 2013 18:53
  •      //Recupera as ordenações e da um ToList() para criar uma nova lista e não perder referência quando zerar
                var sort = grd.Items.SortDescriptions.ToList();

                //Popula novamente o grid com os valores, neste momento o SortDescriptions vai ser zerado no grid
                ObservableCollection<MinhaClasse> collecao = new ObservableCollection<MinhaClasse>();
                collecao.Add(new MinhaClasse() { Id = 1, Nome = "Valor 1" });
                collecao.Add(new MinhaClasse() { Id = 2, Nome = "Valor 2" });
                collecao.Add(new MinhaClasse() { Id = 3, Nome = "Valor 3" });
                DataContext = collecao;

                //Adicionada novamente os SortDescriptions no grid, mantendo ordenado como da ultima vez
                foreach (var item in sort)
                {
                    grd.Items.SortDescriptions.Add(item);
                }

                //Se precisar limpar a ordenação no evento click de algum botão.
                grd.Items.SortDescriptions.Clear();
    terça-feira, 6 de agosto de 2013 19:39