Jump to content

Ordenação de uma dataGridView


eskalha
 Share

Recommended Posts

Boa noite,

Eu tenho, a quando do carregamento do meu form, o preenchimento de uma dataGridView com um IList que contem um select feito a base de dados:

 IList dv1 = DM_Graph.DadosVoo.LoadAll();
            
            DadosVoo gaga = (DM_Graph.DadosVoo)dv1[0];
            dataGridView1.DataSource = dv1;

Gostaria de saber como é que faço para quando a aplicação estiver a correr, a datagridView seja ordenada a quando do click do utilizador no nome de uma coluna, por ordem crescente e, caso possivel, ao segundo click no memso nome ordenar pela ordem inversa

Desde já obrigado

Link to comment
Share on other sites

A minha dúvida é que no meu não está a fazer.

Com o select que faço à bd vai buscar todos os valores de todos os atributos na tabela e poe na DGV mas por defeito  tá ordenado por ID. O que eu pretendo é, na aplicação, ao clicar no nome da coluna, ele ordene tudo de acordo com essa coluna, e isso não está a fazer

Link to comment
Share on other sites

A propriedade SortMode de uma DataGridViewColumn pode ter 3 valores:

- Automatic (por defeito apenas quando o tipo de coluna é textbox) : Utilizador ordena a coluna clicando no seu header;

- NotSortable : A coluna nunca pode ser ordenada

- Programmatic : Podes ordernar a coluna apenas por código

Link to comment
Share on other sites

Pois eu li sobre isso tudo pus assim no meu codigo, mas ainda assim não funcionou.

Podes ver se tenho alguma coisa mal feita?

 private void GraficoVoo_Load(object sender, EventArgs e)
        {
            
            IList dv1 = DM_Graph.DadosVoo.LoadAll();
            
            
            DadosVoo gaga = (DM_Graph.DadosVoo)dv1[0];
            dataGridView1.DataSource = dv1;    

            dataGridView1.Columns[gaga.IDVoo].SortMode = DataGridViewColumnSortMode.Automatic;
            //dataGridView1.Columns[gaga.ConsumoMedio].SortMode = DataGridViewColumnSortMode.Automatic;
            //dataGridView1.Columns[gaga.ConsumoTotal].SortMode = DataGridViewColumnSortMode.Automatic;

Na dataGridView properties já pus enable no AllowUserToOrderColumn e mesmo assim não faz o que quero :S

Link to comment
Share on other sites

Sim fica Automatic.

Mas não permite ordenar na mesma. e se eu fizer o mesmo para outro atributo, por exemplo

dataGridView1.Columns[gaga.DuracaoTotal].SortMode = DataGridViewColumnSortMode.Automatic;

Já da uma excepção do tipo NullPointException:

Object reference not set to an instance of an object.

Será por a variável DuracaoTotal ser do tipo string?

Link to comment
Share on other sites

Porra mas isso não pode ser possível porque eu tou a carregar tudo o que ta na dataGridView da base de dados e a informação aparece toda, por isso é que não sei o que se passa. Se preenche todos os campos do atributo DuracaoTotal é porque a coluna é encontrada, certo?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.