繁体   English   中英

检查dataype是否是绑定数据中的日期

[英]checking if dataype is date in bound data

我需要在gridview中格式化datetime以仅显示日期。 在从sql提取过程中,我不能只是更改单个列的格式,因为代码使用.net生成的SqlDataAdapter.Fill。 我阅读了其他stackoverflow问题,以了解如何更改绑定字段中的日期格式,而其他答案则要求使用诸如gridview之类的东西。 如果我尝试只是键入和使用它,就不会找到智能感知的格式,并且毫不奇怪地给了我一个没有定义的编译错误。 我不能简单地在aaspx中更改属性,因为它是以编程方式生成的gridview。

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

编辑:我找到了一种方法,将其放在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();
                }

即使SQL由数据适配器执行,也可以使用“转换”功能修改“选择”命令中的代码以将日期时间字段转换为字符串。 就像是

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

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

我认为更好的方法是更改​​选择,或者更好,如果您需要数据的特定视图,只需使用所需的数据创建正确的SQL查询,使用DataReader调用它,然后创建一个数据表以用作源您的gridview,并保留标准的select命令以用于更多特定用途。 高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM