using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataGridViewDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
lst.Add(new Student() { Age = 5, Name = "aaa" });
lst.Add(new Student() { Age = 55, Name = "ccc" });
lst.Add(new Student() { Age = 25, Name = "bbb" });
lst.Add(new Student() { Age = 15, Name = "eee" });
lst.Add(new Student() { Age = 35, Name = "ddd" });
dataGridView1.DataSource = lst;
}
List<Student> lst = new List<Student>();
private SortOrder sortOrder = SortOrder.Ascending;
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
int nColumnIndex = e.ColumnIndex;
if (dataGridView1.Columns[nColumnIndex].SortMode != DataGridViewColumnSortMode.Programmatic)
{
return;
}
if (sortOrder == SortOrder.Ascending)
{
if (dataGridView1.Columns[nColumnIndex].HeaderCell.Value.ToString() == "Name")
{
lst = lst.OrderBy(s => s.Name).ToList();
}
else if (dataGridView1.Columns[nColumnIndex].HeaderCell.Value.ToString() == "Age")
{
lst = lst.OrderBy(s => s.Age).ToList();
}
sortOrder = SortOrder.Descending;
}
else if (sortOrder == SortOrder.Descending)
{
if (dataGridView1.Columns[nColumnIndex].HeaderCell.Value.ToString() == "Name")
{
lst = lst.OrderByDescending(s => s.Name).ToList();
}
else if (dataGridView1.Columns[nColumnIndex].HeaderCell.Value.ToString() == "Age")
{
lst = lst.OrderByDescending(s => s.Age).ToList();
}
sortOrder = SortOrder.Ascending;
}
dataGridView1.DataSource = lst;
}
}
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
}