DataGridView datetime列无法排序

时间:2018-05-19 22:00:32

标签: c# datagridview

我知道很多像这样的问题,但我找不到一个可以帮助我的案例。

我有一个DataGridView,我插入没有数据集的行和列,但是从列表中插入。我检查该列是否包含日期时间类型及其成功:

string[] formats = {"M/d/yyyy", "MM/dd/yyyy",
                        "d/M/yyyy", "dd/MM/yyyy",
                        "yyyy/M/d", "yyyy/MM/dd",
                        "M-d-yyyy", "MM-dd-yyyy",
                        "d-M-yyyy", "dd-MM-yyyy",
                        "yyyy-M-d", "yyyy-MM-dd",
                        "M.d.yyyy", "MM.dd.yyyy",
                        "d.M.yyyy", "dd.MM.yyyy",
                        "yyyy.M.d", "yyyy.MM.dd",
                        "M,d,yyyy", "MM,dd,yyyy",
                        "d,M,yyyy", "dd,MM,yyyy",
                        "yyyy,M,d", "yyyy,MM,dd",
                        "M d yyyy", "MM dd yyyy",
                        "d M yyyy", "dd MM yyyy",
                        "yyyy M d", "yyyy MM dd",
                        "dd MMMM yyyy", "dd MMM yy"
                       };
        List<string> _columnList = new List<string>();
        List<HtmlNode> _descList = new List<HtmlNode>();
        DateTime date;
        GetResultsDecendants(_descList, targetNode);
        foreach( var _desc in _descList)
        {
            foreach( string dtFormat in formats)
            {
                if(DateTime.TryParseExact(_desc.InnerText, dtFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
                {
                    finalDateFormat = dtFormat;
                }
            }
            if ( finalDateFormat != null)
            {
                _columnList.Add(_desc.Name+" -Date");
            }
            _columnList.Add(_desc.Name);

创建coluns后,我将特定列的格式设置为正确的格式

dataGridView.Columns[colHasDate].DefaultCellStyle.Format = finalDateFormat;

我甚至确保该列中每个单元格的值都具有DateTime

的类型
if (colList[colindex].Contains("Date"))
                {
                    dgvRow.Cells.Add(new DataGridViewTextBoxCell()
                    {
                        Value = listItem.InnerText,
                        ValueType = typeof(DateTime)
                    }
                    );
                }

但是,当我尝试通过单击列名称对其进行排序时,它几乎失败,它将显示最早的第一个,但从中它几乎是随机的。 请帮忙。

0 个答案:

没有答案