1

我有一个DataSet,我GridView用这个绑定我的DataSet。我AutoGenerateColumns的设置为真。由返回的列之一DataSet有一个DateTime值,我只需要获取其中的日期部分,然后将网格与DataSet. 我试过这样做,但没有奏效。任何帮助将不胜感激。

  private void FormatDataSet(DataSet ds) 
{ 
    foreach(DataRow dr in ds.Tables[0].Rows.Count) 
       dr["Col5"] = (DateTime.Parse(dr["col5"].ToString())).ToString("d").ToString(); 
 }
4

1 回答 1

2

我相信这是使用 AutoGenerateColumns 属性的限制之一。如果您通过 s 手动定义列BoundField,您将能够使用DataFormatString属性控制格式。

至于您的情况,您的方法不起作用的原因是因为您试图将字符串强制转换为 DataSet 中的 Date 类型字段。除非您更改 DataSet 定义,否则这是不可能的。

解决此问题的一种方法是转到 GridView 的 RowDataBound 事件并手动编辑单元格。

private void YourGridViewControl_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
    DataRowView drv = null;
    if (e.Row.RowType == DataControlRowType.DataRow) {
        drv = (DataRowView)e.Row.DataItem();
        e.Row.Cells[1].Text = (DateTime.Parse(dr("col5").ToString())).ToString("d");
    }
}
于 2012-10-18T18:16:06.640 回答