【发布时间】:2010-11-24 21:31:23
【问题描述】:
我正在将数据库中的数据加载到 DataTable 中,其中一列是日期字段。
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "MySP";
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
dt.Load(rdr);
}
}
我想对该列进行格式化,使其不包含完整的日期,而是将其格式化为“MM/DD/YYYY”。
我尝试遍历表中的每一行并更改该列的单元格,但我收到一条错误消息,指出该字符串不是有效的 DateTime 对象。
我尝试将 DateType 列更改为字符串,但我收到一条错误消息,提示我在填满表格后无法更改 DateType。
我该怎么做?这似乎是一件很简单的事情,但我遇到了很多麻烦。
【问题讨论】:
-
您在哪里以及如何使用此数据表?我会说你应该在你的 UI 层(例如作为数据源)上使用它时格式化日期,而不是之前。
-
我将它绑定到 GridView。这些列是动态的,因此我无法在设计视图中对其进行格式化。列的索引也可以不同,所以也不像在 RowDataBound 事件中更改它那么容易。
-
如果是这种情况,那么您可能希望在插入值之前将列类型设置为字符串并对其进行格式化。
-
@Aaron 他没有手动插入值,一切都由
Load()内部处理 -
我没有看到 sp。我会更改 sp 以返回格式化字符串而不是日期时间值。正如 Josh 指出的那样,基本上在 sp 中进行格式化。