lunes, 7 de febrero de 2011
DataGridView ordenar con listas genéricas (DataGridView sorting with Generic List)
Recientemente cambiamos con un amigo los Obsoletos Data Set por listas genéricas y el se dio cuenta que cuando se le asigna el Data Source al Grid llena la información pero no permite ordenar.Para lograr este objetivo llegamos a una solución un poco rustica pero funcional.
Capturamos el evento: dataGridView1_ColumnHeaderMouseClick
Este Evento es el que se dispara cuando realizamos una solicitud de ordenación.
Private SortOrder Orden = SortOrder.None;
Private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if(e.Button == MouseButtons.Left){
{
DataGridViewColumn newColumn = dataGridView1.Columns[e.ColumnIndex];
if(dataGridView1.SortOrder == SortOrder.None)
{
if(newColumn.Name == "Edad")
{
if(Orden == SortOrder.Descending)
{
dataGridView1.DataSource = students.OrderBy(p => p.Edad).ToList();
Orden = SortOrder.Ascending;
}
else
{
dataGridView1.DataSource = students.OrderBy(p => p.Edad).Reverse().ToList();
Orden = SortOrder.Descending;
}
}
if(newColumn.Name == "Nombre")
{
if(Orden == SortOrder.Descending)
{
dataGridView1.DataSource = students.OrderBy(p => p.Nombre).ToList();
Orden = SortOrder.Ascending;
}
else
{
dataGridView1.DataSource = students.OrderBy(p => p.Nombre).Reverse().ToList();
Orden = SortOrder.Descending;
}
}
if(newColumn.Name == "Sexo")
{
if(Orden == SortOrder.Descending)
{
dataGridView1.DataSource = students.OrderBy(p => p.Sexo).ToList();
Orden = SortOrder.Ascending;
}
else
{
dataGridView1.DataSource = students.OrderBy(p => p.Sexo).Reverse().ToList();
Orden = SortOrder.Descending;
}
}
}
}
}
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario