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中的单元格处于可编辑

使用查找组合框 c# 绑定 Datagridview 多列排序

c# datagridview按数字排序

DataGridView 行列的隐藏和删除

在 C# 中对 dataGridView 列进行排序? (Windows 窗体)

C# datagridview绑定集合,怎样点击列标题使之排序