eskalha Posted March 7, 2012 Report Share Posted March 7, 2012 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 More sharing options...
Caça Posted March 7, 2012 Report Share Posted March 7, 2012 Ela já faz isso por defeito, qual é a tua duvida? Pedro Martins Não respondo a duvidas por PM Link to comment Share on other sites More sharing options...
eskalha Posted March 8, 2012 Author Report Share Posted March 8, 2012 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 More sharing options...
Caça Posted March 8, 2012 Report Share Posted March 8, 2012 Se tiveres a propriedade SortMode da coluna que queres que seja ordenada activada, ele ordena.. Pedro Martins Não respondo a duvidas por PM Link to comment Share on other sites More sharing options...
eskalha Posted March 8, 2012 Author Report Share Posted March 8, 2012 E onde vejo isso? é que as colunas formadas vêm todas da BD. Tem propriedades na parte do desenho no VS? Link to comment Share on other sites More sharing options...
edmolko Posted March 8, 2012 Report Share Posted March 8, 2012 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 More sharing options...
eskalha Posted March 8, 2012 Author Report Share Posted March 8, 2012 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 More sharing options...
edmolko Posted March 8, 2012 Report Share Posted March 8, 2012 Assim à primeira vista não estou a ver. Em debug podes verificar se o valor de dataGridView1.Columns[gaga.IDVoo].SortMode fica realmente Automatic? Link to comment Share on other sites More sharing options...
eskalha Posted March 8, 2012 Author Report Share Posted March 8, 2012 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 More sharing options...
edmolko Posted March 8, 2012 Report Share Posted March 8, 2012 A exceção é disparada porque não foi encontrada a coluna dataGridView1.Columns[gaga.DuracaoTotal] Link to comment Share on other sites More sharing options...
eskalha Posted March 8, 2012 Author Report Share Posted March 8, 2012 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 More sharing options...
Gonka Posted March 9, 2012 Report Share Posted March 9, 2012 Estás a passar o nome do campo ou o nome da coluna na tabela? Link to comment Share on other sites More sharing options...
eskalha Posted March 9, 2012 Author Report Share Posted March 9, 2012 Tou a passar o nome do campo. Não devia? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now