C#对datagridview数据排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#对datagridview数据排序相关的知识,希望对你有一定的参考价值。
举个例子有1个对姓名进行排序的button,点击之后对datagridview里面的数据进行排序
排序原理一般是因为DataView有排序功能.下面方法对DataGrid和GridView都适用,操作步骤如下:1.在需要排序的字段里加:SortExpression,如:
<asp:BoundColumn DataField="D_DATE" HeaderText="申报日期" SortExpression="D_DATE">
</asp:BoundColumn>
----------------
2.在PageLoad()里:(即开始Load页面时以什么方式排序)
ViewState["SortOrder"] = "D_DATE";
ViewState["OrderDire"] = "ASC";
----------------
3.在绑定Grid时:
假设数据源为DataView,ID为objDV.
string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
objDV.Sort = sort;
this.GridView1.DataSource = objDV;
this.GridView1.DataBind();
----------------
4.在GridView的Sorting事件中:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
string sPage = e.SortExpression;
if (ViewState["SortOrder"].ToString() == sPage)
if (ViewState["OrderDire"].ToString() == "Desc")
ViewState["OrderDire"] = "ASC";
else
ViewState["OrderDire"] = "Desc";
else
ViewState["SortOrder"] = e.SortExpression;
Bind();//绑定Grid方法
(如果是DataGrid,则为SortCommand事件)
参考资料:此方法借鉴了清清月儿的博客,在此感谢
参考技术A this.dataGridView1.Columns["列名"].SortMode =DataGridViewColumnSortMode.Automatic;
如果列名不确定的话就用下标
this.dataGridView1.Columns[0].SortMode =
DataGridViewColumnSortMode.Automatic;
c#字典dictionary绑定datagridview如何排序
double m;
Dictionary<int, double> dic = new Dictionary<int, double>();
m = 0.26531 * sim1 + 0.22449 * sim2 + 0.18367 * sim3 + 0.14286 *sim4 +0.10204 * sim5 + 0.06122 * sim6 + 0.0041 * sim7;
dic.Add(int.Parse(tl.GetValue(0).ToString()), m);
BindingSource bs = new BindingSource();
bs.DataSource = dic;
this.dataGridView1.DataSource = bs;
this.dataGridView1.Columns[0].HeaderText = "Gid";
this.dataGridView1.Columns[1].HeaderText = "相似度";
如何对“相似度”列进行排序??请高手指点!谢谢!
Dictionary排序
Dictionary<int, string> list = new Dictionary<int, string>();//实例化一个字典
Random rd = new Random();//为了更加真实,创建一个生成整数的随机数生成器
int id = 0;
List<int> idlist = new List<int>();//用来生成100个整数,并存放到列表里idlist
for (int i = 0; i < 100; i++)
id = rd.Next(1, 100);
idlist.Add(id);
//遍历列表idlist,并加入字典list
foreach (int item in idlist)
if (!list.ContainsKey(item))
list.Add(item, "字典排序测试");
//实现排序的关键方法,可以声明一个key-value结构的集合数组,这里用了List,只要符合key-value结构的数据结构都可以,
//然后利用字典的OrderBy(升序)、OrderByDescending(降序)方法轻松实现排序功能
//通过过linq也可以实现:var result = from pair in dic orderby pair.Key select pair
List<KeyValuePair<int, string>> lstorder = list.OrderByDescending(c => c.Key).ToList();
DataTable dt = new DataTable();
dt.Columns.Add("编号");
dt.Columns.Add("内容");
foreach (KeyValuePair<int, string> item in lstorder)
dt.Rows.Add(item.Key, item.Value);
this.dataGridView1.DataSource = dt;//用DataGridView来展示结果
效果如下
参考技术A Dictionary<int, double> dic = new Dictionary<int, double>();dic.OrderBy(t=>t.Value); // 顺序
或者dic.OrderByDescending(t=>t.Value); // 倒序
注:需要引用System.Linq命名空间。
以上是关于C#对datagridview数据排序的主要内容,如果未能解决你的问题,请参考以下文章
使用查找组合框 c# 绑定 Datagridview 多列排序