更新代码中数据表中的数据行

时间:2012-03-12 21:09:27

标签: c# ado.net datatable datarow

我正在尝试做一些你认为非常直接的事情。我正在从数据库中检索记录以在详细信息视图中显示。但是,在我向用户显示记录之前,我想删除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

1 个答案:

答案 0 :(得分:2)

假设您转换为DateTime在某条线上失败了:

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

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

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

希望这有帮助。