【问题标题】:ASP.NET GridView fail to sort a Date passed as stringASP.NET GridView 无法对作为字符串传递的日期进行排序
【发布时间】:2012-01-29 13:19:03
【问题描述】:

您好,我正在构建一个具有 AutoGenerateColumns = True 的网格视图的站点,例如,我遇到的问题是使用数据视图的排序条件无法正常工作。如果我在gridview上已经显示了以下记录:

  • 姓名            地址             日期 (MM/DD/YYYY)
  • Julio XYZ      澳大利亚              2010 年 12 月 25 日
  • David 1234  新西兰        2010 年 12 月 26 日
  • Erika 5555   新加坡            2011 年 12 月 14 日

如果我这样排序:

Dim dt As DataTable = Me.GetDataTable(Me.GetQuery(Sentence, params))
Dim dv As DataView = dt.DefaultView
dv.Sort = SortExpression & " " & SortDirection
gv.DataSource = dv
gv.DataBind()

网格中的结果是:

  • 姓名              地址         日期(MM/DD/YYYY)

  • Erika 5555     新加坡       2011 年 12 月 14 日

  • Julio XYZ        澳大利亚         2010 年 12 月 25 日
  • David 1234    新西兰   2010 年 12 月 26 日

所以问题似乎是排序只考虑日期的一部分,只考虑前五个字符而不是整个字符串。

SortExpression 的值是 Date 的 ColumnName,在数据源中是 CallDate,SorDirection 的值是 ASC

Me.GetDataTable(Me.GetQuery(Sentence,paramas)) 只是一种用数据库中的记录填充数据表的方法。

另一件事,遗憾的是,我无法更改日期的格式,因为这是一种以这种方式呈现的业务需求,而且由于项目的预算,我也不允许使用第三方控件。 :-(

提前感谢您的任何想法。

【问题讨论】:

  • 它并没有正确排序失败。你给了它一个字符串和标准类型的字符串 12/14/2011
  • 感谢您的回复,但如果列是自动生成的,我如何告诉网格,该列将是日期值和它自己的格式?
  • 你说它是作为字符串传递的,所以应该只是找出在哪里完成并将其作为日期传递的问题。

标签: sorting date gridview


【解决方案1】:

首先我要确认一下你的Date是不是DateTime类型,如果是的话,

请尝试如下示例,希望这些对您有所帮助。

                Dim dt As DataTable = Me.GetDataTable(Me.GetQuery(Sentence, params))
                dt.DefaultView.Sort = "Date ASC" ''Sort with Asc.
                gv.DataSource = dt
                gv.DataBind()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2021-12-18
    • 2016-04-04
    相关资源
    最近更新 更多