zoukankan      html  css  js  c++  java
  • DataGridView 多列排序功能

    System.Data.DataTable dt = new System.Data.DataTable();
            private void FillDataGridView()
            {
                dt.Columns.Add("Name");
                dt.Columns.Add("Course");
                dt.Columns.Add("Type");
                dt.Columns.Add("Score");
                DataRow dr = dt.NewRow();
                dr["Name"] = "Lily";
                dr["Course"] = "Math";
                dr["Type"] = "期中";
                dr["Score"] = 88;
                dt.Rows.Add(dr);
                DataRow dr1 = dt.NewRow();
                dr1["Name"] = "Lily";
                dr1["Course"] = "EN";
                dr1["Type"] = "期中";
                dr1["Score"] =98;
                dt.Rows.Add(dr1);
                DataRow dr2 = dt.NewRow();
                dr2["Name"] = "Rich";
                dr2["Course"] = "Math";
                dr2["Type"] = "期末";
                dr2["Score"] = 78;
                dt.Rows.Add(dr2);
                DataRow dr3 = dt.NewRow();
                dr3["Name"] = "Lily";
                dr3["Course"] = "Math";
                dr3["Type"] = "期末";
                dr3["Score"] = 97;
                dt.Rows.Add(dr3);
                dgv_Test.DataSource = dt;
            }
    
                  private void dgv_Test_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
            {
                if (dgv_Test.Columns[e.ColumnIndex].Name == "Name")
                {
                    dt.DefaultView.Sort = "Name,Score Asc";
                    dgv_Test.DataSource = dt;
                }
            }

    这个其实没有任何技术的难度,只是思路稍微转换了一下。

    当接到用户的需求,他们希望点击一列,然后另一列也按照期望排序,并且需要保留datagridview自带的点击列头排序功能时,

    我的第一反应是拒绝的,这个怎么可以做到,明显相违背的两个操作嘛。

    当我百度了一会儿,然后整理了一下思路,我明白了。

    解决方案:

       我可以通过点击选中的列头,给datagridview重新绑定数据源。(当然要求数据量比较小)。

    代码如下:

      我这里使用的是datatable,我在绑定数据源之前对datatable重新排序,到此,问题解决。

    这个其实没有任何技术的难度,只是思路稍微转换了一下。

    当接到用户的需求,他们希望点击一列,然后另一列也按照期望排序,并且需要保留datagridview自带的点击列头排序功能时,

    我的第一反应是拒绝的,这个怎么可以做到,明显相违背的两个操作嘛。

    当我百度了一会儿,然后整理了一下思路,我明白了。

    解决方案:

       我可以通过点击选中的列头,给datagridview重新绑定数据源。(当然要求数据量比较小)。

    代码如下:

      我这里使用的是datatable,我在绑定数据源之前对datatable重新排序,到此,问题解决。

  • 相关阅读:
    Codeforces Round #536 E. Lunar New Year and Red Envelopes /// 贪心 记忆化搜索 multiset取最大项
    牛客网暑期ACM多校训练营(第五场) F
    关于线段树or 树状树状 在二维平面搞事情!Orz
    ZOJ 3822 ( 2014牡丹江区域赛D题) (概率dp)
    HDU4336 Card Collector (概率dp+状压dp)
    POJ 2151 Check the difficulty of problems(概率DP)
    CF E2
    HDU4089 Activation(概率DP+处理环迭代式子)
    HDU4035 Maze (概率DP)
    牛客 Rabbit的数列 (线段树维护值为x的个数+区间覆盖)
  • 原文地址:https://www.cnblogs.com/skyloverdan/p/9234963.html
Copyright © 2011-2022 走看看