DataGridView 绑定数据源 BindingList<T>
一.绑定数据源 BindingList<T>
1.定义行数据格式
public class datarow
{
public string name{get;set;}
public bool beman { get; set; }
public int age { get; set; }
}
2.创建要绑定的数据BindingList<T>
BindingList<datarow> datas = new BindingList<datarow>();
datarow row1 = new datarow();
row1.name = "name2";
row1.beman = true;
row1.age = 12;
datarow row2 = new datarow();
row2.name = "name3";
row2.beman = false;
row2.age = 15;
datarow row3 = new datarow();
row3.name = "name1";
row3.beman = false;
row3.age = 15;
datas.Add(row1);
datas.Add(row2);
datas.Add(row3);
this.dataGridView1.DataSource = datas;
this.dataGridView1.Refresh();
3.获取修改后的数据
foreach (datarow one in datas)
{
MessageBox.Show(one.name.ToString());
}
二、排序
1.使用BindingList<T>的orderby(这个很简单)
this.dataGridView1.DataSource=datas.OrderBy(a => a.name).ToArray();
2.声明一个List,将BindingList传入作为构造函数,对List进行排序再将元素添加回BindingList。
a.申明list的比较函数
public void SortReportList(ref List<datarow> reportList)
{
reportList.Sort(delegate(datarow x, datarow y)
{
//First sort by category id, then display order, so report in same category gathered and sorted.
int result = x.name.CompareTo(y.name);
if (result == 0)
return x.age - y.age;
else
return result;
});
}
b.把BindingList转为list,list排序后,再回存到BindingList
public void SortReportsByDisplayOrder(ref BindingList<datarow> reportList)
{
List<datarow> list = new List<datarow>(reportList);
SortReportList(ref list);
reportList.Clear();
foreach (datarow rpt in list)
{
reportList.Add(rpt);
}
}
c.在需要排序的地方增加
SortReportsByDisplayOrder(ref datas);

浙公网安备 33010602011771号