【问题标题】:Updating a datarow in a datatable within code在代码中更新数据表中的数据行
【发布时间】: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


【解决方案1】:

假设您转换为DateTime 在这条线上不知何故失败了:

bool result = DateTime.TryParse(row[columnName].ToString(), out dateTime);

检查此行是否返回true。如果不考虑使用正确的Culture 以便能够进行转换。

DateTime.TryParse Method (String, IFormatProvider, DateTimeStyles, DateTime)

希望这会有所帮助。

【讨论】:

  • 我的转换工作正常。当我将它添加到监视列表时,它包含我想要的值。只有当我将它分配给 row[columnName] 时,该值才会在数据绑定到 detailsView 之前持续存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多