C# 检查数据类型是否为绑定数据中的日期

C# 检查数据类型是否为绑定数据中的日期,c#,asp.net,datetime,gridview,format,C#,Asp.net,Datetime,Gridview,Format,我需要在gridview中格式化datetime,以便只显示日期。在从sql提取期间,我不能仅仅更改单个列的格式,因为代码使用.net生成的SqlDataAdapter.Fill。我阅读了关于如何更改绑定字段中的日期格式的其他stackoverflow问题,还有一些答案需要使用gridview之类的工具。intellisense找不到的格式,如果我尝试键入并使用它,它会给我一个无定义编译错误,这并不奇怪。我不能简单地更改aaspx中的teh属性,因为它是通过编程生成的gridview 是否有一种

我需要在gridview中格式化datetime,以便只显示日期。在从sql提取期间,我不能仅仅更改单个列的格式,因为代码使用.net生成的SqlDataAdapter.Fill。我阅读了关于如何更改绑定字段中的日期格式的其他stackoverflow问题,还有一些答案需要使用gridview之类的工具。intellisense找不到的格式,如果我尝试键入并使用它,它会给我一个无定义编译错误,这并不奇怪。我不能简单地更改aaspx中的teh属性,因为它是通过编程生成的gridview

是否有一种方法可以在gridview中跨列枚举并检查列是否已经是datetime类型(它们将作为datetime从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命令中的代码,以便使用Convert函数将datetime字段转换为字符串。 差不多

SELECT field1, field2,..., fieldN, convert(varchar, getdate(), 103) as mydate
或者,如果无法以任何方式修改SELECT,则可以动态地向datatable添加一个字段,并将日期以字符串格式放在该字段上(但这很耗时),并且只有在可以隐藏gridview列以便仅显示字符串格式的列时,才可以作为解决方案

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

当你说“程序生成”你是说gridview存在于sapx中并自动生成列,还是说gridview正在动态生成并添加到其他一些容器的
控件
属性中?我实际上是在使用select将加密字段从varbinarychar更改为date>时在数据绑定中找到了方法。我将把它添加到问题中