2012-03-12 54 views
1

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

+0

您传递给格式方法的列的类型是什么?如果您阅读DateTime并尝试存储字符串,我想知道为什么这不会引发异常... – CodeZombie 2012-03-12 21:17:03

+0

数据库中的列是DateTime,但传入我的格式化方法的字符串是列的字符串名称。 – gsirianni 2012-03-12 21:23:38

+0

转换工作正常。当我添加dateTime.ToShortDateString(); 到监视列表它返回我想要存储在r [columnName]中的值,但是当我像 – gsirianni 2012-03-12 21:26:13

回答

2

转换到DateTime莫名其妙地在这条线失败:

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

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

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

希望这有助于。

+0

我的转换工作正常。当我将它添加到监视列表中时,它包含我想要的值。只有当我将其分配给row [columnName]时,该值在数据绑定到detailsView之前不会持续存在。 – gsirianni 2012-03-12 21:28:29