ORDEM DE SELECAO DO DATAGRIDVIEW
Boa Noite Pessoal.
Estou tendo um problema ao selecionar varios linhas do Grid.
Quando seleciono todas as linhas do grid (selecionando de cima para baixo) ou seja da primeira linha a ultima as memas não saem na mesma ordem no SelectedCells.
EX: 1° Linha possui o codigo A
2° Linha possui o codigo B
3° Linha possui o codigo C
Usando o MultiSelect seleciono a primeira 1° linha de a 2° e assim por diante.
Quando crio o Objeto para pegar as linhas selecionas e faço um for para percorrer as memas para pegare o conteudo de cada uma, ele me retorna a sequecia errada.
Ex :1° loop me retorna o codigo C
2° loop me retorna o codigo B
3° loop me retorna o codigo A
segue o codigo:
DataGridViewSelectedCellCollection selecionadas = Grid_Cdigo.SelectedCells;
String [] Cdigos = new String [selecionadas.Count];
for (i = 0; i < selecionadas.Count; i++)
{
DataGridViewCell celula = selecionadas[i];
linha = celula.RowIndex;// Linha
Cdigos = Grid_Cdigo.Rows[linha].Cells[3].Value.ToString();
}
Gostaria de saber se existe algum jeito de retornar as celulas selecionadas na ordem do Grid ou seja da primeira até a ultima independente da ordem que eu selecionei as celulas.
VLW!!!
Estou tendo um problema ao selecionar varios linhas do Grid.
Quando seleciono todas as linhas do grid (selecionando de cima para baixo) ou seja da primeira linha a ultima as memas não saem na mesma ordem no SelectedCells.
EX: 1° Linha possui o codigo A
2° Linha possui o codigo B
3° Linha possui o codigo C
Usando o MultiSelect seleciono a primeira 1° linha de a 2° e assim por diante.
Quando crio o Objeto para pegar as linhas selecionas e faço um for para percorrer as memas para pegare o conteudo de cada uma, ele me retorna a sequecia errada.
Ex :1° loop me retorna o codigo C
2° loop me retorna o codigo B
3° loop me retorna o codigo A
segue o codigo:
DataGridViewSelectedCellCollection selecionadas = Grid_Cdigo.SelectedCells;
String [] Cdigos = new String [selecionadas.Count];
for (i = 0; i < selecionadas.Count; i++)
{
DataGridViewCell celula = selecionadas[i];
linha = celula.RowIndex;// Linha
Cdigos = Grid_Cdigo.Rows[linha].Cells[3].Value.ToString();
}
Gostaria de saber se existe algum jeito de retornar as celulas selecionadas na ordem do Grid ou seja da primeira até a ultima independente da ordem que eu selecionei as celulas.
VLW!!!
Eu ja estive apertado e agarrado na mesma situação, e como resolvi ?
criei uma lista(integer) com o index das linhas selecionadas e dei um sort na lista e voalaaaaa... =]
segue um exemplo abaixo !!!
Abraços
criei uma lista(integer) com o index das linhas selecionadas e dei um sort na lista e voalaaaaa... =]
segue um exemplo abaixo !!!
//Evento Click de qualquer botao (Exemplo)
private void button3_Click(object sender, EventArgs e)
{
//Crio a lista de Integer e uma StringBuilder
List<int> myList = new List<int>();
StringBuilder sb = new StringBuilder();
//Para cada linha selecionada eu taco ela na lista
foreach (DataGridViewRow dr1 in this.dataGridView1.SelectedRows)
{
myList.Add(dr1.Index);
}
//Aqui a grande sacada, eu ordeno a numeração usando o SORT
myList.Sort();
//agora para cada item que esta na lista eu exibo o valor dos itens
foreach (int nItem in myList)
{
//Montagem da String
sb.Append([Ô]Linha Selecionada: [Ô]);
sb.Append(this.dataGridView1.Rows[nItem].Index);
sb.Append([Ô] // [Ô]);
sb.Append([Ô]Valor encontrado na linha: [Ô]);
sb.Append(this.dataGridView1.Rows[nItem].Cells[0].Value.ToString());
sb.Append(Environment.NewLine);
}
//Fechamento e MessageBox
sb.Append([Ô]Total de Linhas Selecionadas: [Ô]);
sb.Append(myList.Count());
MessageBox.Show(sb.ToString());
}
Abraços
VLW ZEROCAL vou tentar aqui!!!!!
Tópico encerrado , respostas não são mais permitidas