【问题标题】:checking if dataype is date in bound data检查数据类型是否是绑定数据中的日期
【发布时间】:2015-05-18 17:29:46
【问题描述】:

我需要在网格视图中格式化日期时间以显示日期。在从 sql 提取期间,我不能只更改单个列的格式,因为代码使用 .net 生成的 SqlDataAdapter.Fill。我阅读了有关如何更改绑定字段中的日期格式的其他 stackoverflow 问题,而其他答案要求使用类似 gridview 的东西。如果我尝试仅键入并使用它,则智能感知未找到并且不出所料地给我一个无定义的编译错误的格式。我不能简单地更改 aaspx 中的属性,因为它是以编程方式生成的网格视图。

有没有办法枚举gridview中的列并检查列是否已经是日期时间类型(它们将从sql作为日期时间进入,排序已经正常工作,因此它们不会作为字符串进入) 并将它们的格式更改为日期?目前,当我尝试枚举它跳过的列时,因为在数据绑定期间gridview中的列数仍然为0。或者有没有人有一个更便宜的想法,这些是成千上万的行进来所以如果我可以为日期时间信息格式化列或整个网格视图,它可能会好得多。谢谢

编辑:我找到了一种方法,将其放入 gridview_RowDataBound

                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    AutoGeneratedField field = cell.ContainingField as AutoGeneratedField;
                    if (field != null && field.DataType == typeof(DateTime))
                        cell.Text = DateTime.Parse(cell.Text).ToShortDateString();
                }

【问题讨论】:

  • 当您说“以编程方式生成”时,您的意思是 gridview 存在于 sapx 中并且正在自动生成列,或者 gridview 正在动态生成并添加到其他一些容器的 Controls 属性?

标签: c# asp.net datetime gridview format


【解决方案1】:

即使 SQL 由数据适配器执行,您也可以修改 Select 命令中的代码,以使用 Convert 函数将日期时间字段转换为字符串。 类似的东西

SELECT field1, field2,..., fieldN, convert(varchar, getdate(), 103) as mydate

或者,如果 SELECT 不能以任何方式修改,您可以即时向数据表添加一个字段,并将日期以字符串格式放在该字段上(但这很耗时),并且只有在以下情况下才能成为解决方案您可以隐藏您的 gridview 列,以便仅显示格式化的字符串。

我认为更好的是更改选择,或者更好,如果您需要对数据的特定视图,只需使用您需要的数据创建正确的 SQL 查询,使用 DataReader 调用它并创建要使用的数据表作为 gridview 的源,并将标准选择命令留给更具体的用途。 高温

【讨论】:

  • 我实际上是在使用 select 将加密字段从 varbinarychar 更改为 date > 确实在数据绑定中找到了方法。我将其添加到问题中
猜你喜欢
  • 2018-09-04
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 2020-05-18
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多