【发布时间】:2012-03-12 21:09:26
【问题描述】:
我正在尝试做一些您认为非常简单的事情。我正在从数据库中检索记录以显示在详细信息视图中。但是,在向用户显示记录之前,我想删除 dateTime 值的时间戳。因此,我尝试通过创建一个采用列名和数据行实例的函数来执行以下操作。
protected void FormatDateFromRow(string columnName, DataRow row)
{
if (row[columnName] != DBNull.Value)
{
DateTime dateTime;
bool result = DateTime.TryParse(row[columnName].ToString(), out dateTime);
if (result)
{
row.BeginEdit();
row[columnName] = dateTime.ToShortDateString();
row.EndEdit();
row.AcceptChanges();
}
}
}
我在一段看起来像这样的逻辑中使用了这个方法。
if (dt != null)
{
if (dt.Rows.Count > 0 && dt.Columns.Contains("SystemName"))
{
DataRow row = dt.Rows[0];
lblHeader.Text = row["SystemName"].ToString();
FormatDateFromRow("GrantedDate", row);
FormatDateFromRow("ExpireDate", row);
dt.AcceptChanges();
dvPackage.DataSource = dt;
dvPackage.DataBind();
}
但是当 detailsView 显示时,时间戳仍然存在。有人可以帮忙吗?
谢谢, GS
【问题讨论】:
-
您传递给格式方法的列是什么类型的?如果您阅读 DateTime 并尝试存储一个字符串,我想知道为什么这不会引发异常...
-
数据库中的列是 DateTime 但我传递给我的格式化方法的字符串是列的字符串名称。
-
转换工作正常。当我添加 dateTime.ToShortDateString();到监视列表,它返回我想存储在 r[columnName] 中的值,但是当我像 一样分配它时
-
转换工作正常。当我添加 dateTime.ToShortDateString();到监视列表,它返回我想存储在 r[columnName] 中的值,但是当我像 一样分配它时
-
行[列名] = dateTime.ToShortDateString();该值不会持续存在并被原始值替换。
标签: c# ado.net datatable datarow