使用空日期时间对DataGridView进行排序

用户名

我有一个datagridview的DateTime值列,其中一些为null。在我尝试按该列排序之前,没有任何问题。我已经实现了此处找到的SortCompare代码

DataGridView在DateTime列中为空的排序

但是调试器仍然抛出异常并指向我的Application.Run(new MainForm());行,说

Object must be of type DateTime.

try-catch我的SortCompare事件处理程序中有一个,我能够成功完成所有代码。只有事件处理程序返回时,才会引发异常。

如何防止这种异常?

码:

在Visual Studio中打开一个新的c#Windows窗体项目,然后将数据网格Full视图对接样式放置在窗体上Form1.cs替换public Form1()为以下代码方法:

public Form1()
    {
        InitializeComponent();

        //Create datatable and add a datetime column
        DataTable dTable = new DataTable();
        DataColumn dColumn = new DataColumn("DateTimes", typeof(DateTime));
        dTable.Columns.Add(dColumn);

        //Add rows
        dTable.Rows.Add(DateTime.Now);
        dTable.Rows.Add(DBNull.Value);

        //Create a datagridview column and add it to the datagridview
        DataGridViewTextBoxColumn dgvColumn = new DataGridViewTextBoxColumn();
        dgvColumn.Name = dColumn.ColumnName;
        dgvColumn.ValueType = dColumn.DataType;
        this.dataGridView1.Columns.Add(dgvColumn);


        //Add rows to the datagridview based on datatable data.
        foreach (DataRow dRow in dTable.Rows)
        {
            DataGridViewRow dgvRow = new DataGridViewRow();
            dgvRow.CreateCells(this.dataGridView1);
            dgvRow.SetValues(dRow.ItemArray);
            this.dataGridView1.Rows.Add(dgvRow);
        }

        //Hook up sortcompare event handler
        this.dataGridView1.SortCompare += new DataGridViewSortCompareEventHandler(dataGridView1_SortCompare);

        //Style datagridview
        this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
    }

    private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
    {
        try
        {
            if (DBNull.Value.Equals(e.CellValue1) || DBNull.Value.Equals(e.CellValue2))
            {
                if (DBNull.Value.Equals(e.CellValue1) || e.CellValue1.Equals(null))
                {
                    e.SortResult = 1;
                }
                else if (DBNull.Value.Equals(e.CellValue2) || e.CellValue2.Equals(null))
                {
                    e.SortResult = -1;
                }
            }
            else
            {
                e.SortResult = (e.CellValue1 as IComparable).CompareTo(e.CellValue2 as IComparable);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

然后运行程序并尝试对列进行排序以引发异常。

克里斯

您缺少e.Handled = true; 将其设置为true将解决您的问题。

 private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
    {
        try
        {
            if (DBNull.Value.Equals(e.CellValue1) || DBNull.Value.Equals(e.CellValue2))
            {
                if (DBNull.Value.Equals(e.CellValue1) || e.CellValue1.Equals(null))
                {
                    e.SortResult = 1;
                }
                else if (DBNull.Value.Equals(e.CellValue2) || e.CellValue2.Equals(null))
                {
                    e.SortResult = -1;
                }
            }
            else
            {
                e.SortResult = (e.CellValue1 as IComparable).CompareTo(e.CellValue2 as IComparable);
            }
e.Handled = true
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用日期时间作为字符串对datagridview进行排序

来自分类Dev

如何使用日期时间作为字符串对datagridview进行排序

来自分类Dev

使用自定义IComparer按日期对DataGridView进行排序

来自分类Dev

Python:使用Lambda以str格式对日期时间进行排序

来自分类Dev

使用数据框在Spark中进行日期时间排序

来自分类Dev

根据日期和时间对元素进行排序

来自分类Dev

熊猫按日期时间对排序的索引进行排序

来自分类Dev

仅使用id字段按插入日期时间对集合进行排序

来自分类Dev

使用临时表在存储过程中的日期时间上对行进行排序

来自分类Dev

使用时间戳对数组进行排序并合并相似的日期

来自分类Dev

有什么方法可以使用日期/时间对表格视图的行进行排序?迅速

来自分类Dev

仅使用id字段按插入日期时间对集合进行排序

来自分类Dev

使用临时表在存储过程中的日期时间上对行进行排序

来自分类Dev

在DataGridView中排序日期

来自分类Dev

如何在CellTable GWT中使用空单元格对日期列进行排序

来自分类Dev

使用JS按日期/时间对div排序

来自分类Dev

使用 AM PM 排序日期时间秒

来自分类Dev

在熊猫中应用日期时间格式进行排序

来自分类Dev

根据日期和时间对Symfony中的对象数组进行排序

来自分类Dev

按日期和时间升序对数组进行排序

来自分类Dev

在mongodb中按日期和时间对集合进行排序

来自分类Dev

Python:以日期时间为键对嵌套字典进行排序

来自分类Dev

根据日期和时间元素对结构进行排序

来自分类Dev

根据日期和时间对Symfony中的对象数组进行排序

来自分类Dev

根据日期时间对ArrayList <HashMap <String,String >>进行排序

来自分类Dev

按日期和时间升序对数组进行排序

来自分类Dev

Java对日期时间值的集合进行排序

来自分类Dev

按自定义日期时间对数组进行排序

来自分类Dev

根据时间和日期对对象数组进行排序

Related 相关文章

  1. 1

    如何使用日期时间作为字符串对datagridview进行排序

  2. 2

    如何使用日期时间作为字符串对datagridview进行排序

  3. 3

    使用自定义IComparer按日期对DataGridView进行排序

  4. 4

    Python:使用Lambda以str格式对日期时间进行排序

  5. 5

    使用数据框在Spark中进行日期时间排序

  6. 6

    根据日期和时间对元素进行排序

  7. 7

    熊猫按日期时间对排序的索引进行排序

  8. 8

    仅使用id字段按插入日期时间对集合进行排序

  9. 9

    使用临时表在存储过程中的日期时间上对行进行排序

  10. 10

    使用时间戳对数组进行排序并合并相似的日期

  11. 11

    有什么方法可以使用日期/时间对表格视图的行进行排序?迅速

  12. 12

    仅使用id字段按插入日期时间对集合进行排序

  13. 13

    使用临时表在存储过程中的日期时间上对行进行排序

  14. 14

    在DataGridView中排序日期

  15. 15

    如何在CellTable GWT中使用空单元格对日期列进行排序

  16. 16

    使用JS按日期/时间对div排序

  17. 17

    使用 AM PM 排序日期时间秒

  18. 18

    在熊猫中应用日期时间格式进行排序

  19. 19

    根据日期和时间对Symfony中的对象数组进行排序

  20. 20

    按日期和时间升序对数组进行排序

  21. 21

    在mongodb中按日期和时间对集合进行排序

  22. 22

    Python:以日期时间为键对嵌套字典进行排序

  23. 23

    根据日期和时间元素对结构进行排序

  24. 24

    根据日期和时间对Symfony中的对象数组进行排序

  25. 25

    根据日期时间对ArrayList <HashMap <String,String >>进行排序

  26. 26

    按日期和时间升序对数组进行排序

  27. 27

    Java对日期时间值的集合进行排序

  28. 28

    按自定义日期时间对数组进行排序

  29. 29

    根据时间和日期对对象数组进行排序

热门标签

归档