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重新排序,到此,问题解决。

  • 相关阅读:
    SQL SERVER 2000 安装提示"一般性网络错误" Hello
    转:关于C#程序路径的问题 Hello
    VS2003提示错误:"无法在web服务器上启用调试,您不具备调试此应用程序的权限" Hello
    转贴:轻松实现坐标转换不同地理位置系统转换入门 Hello
    XP系统优化 Hello
    Explorer.exe出错无法打开我的电脑! Hello
    TreeView控件的使用 Hello
    系统提示:‘状态:驱动程序已启用但尚未开始使用’ Hello
    深入理解 go slice
    go 语言 time 时区问题 疑问
  • 原文地址:https://www.cnblogs.com/skyloverdan/p/9234963.html
Copyright © 2011-2022 走看看