如何在gridview中动态绑定时更改datetime列的格式

时间:2011-06-26 04:18:55

标签: asp.net sql gridview

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DateTime dt,dt1;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            dt = Convert.ToDateTime(e.Row.Cells[4].Text);
            e.Row.Cells[4].Text = dt.Month.ToString() + "/" + dt.Day.ToString() + "/" + dt.Year.ToString();
            dt1 = Convert.ToDateTime(e.Row.Cells[5].Text);
            e.Row.Cells[5].Text = dt1.Month.ToString() + "/" + dt1.Day.ToString() + "/" + dt1.Year.ToString();
        }

    }

这是我的代码,索引为5的列是日期时间,问题是它可以为NULL,因此当

时出现以下错误

“字符串未被识别为有效的DateTime”

任何解决方案请帮忙??!

谢谢你!

3 个答案:

答案 0 :(得分:2)

尝试使用DateTime.TryParse,只有当它返回true时才运行代码的其余部分

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        DateTime dt,dt1;
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            bool success = DateTime.TryParse(e.Row.Cells[4].Text, dt);

            if(success)
            {
                e.Row.Cells[4].Text = dt.Month.ToString() + "/" + dt.Day.ToString() + "/" + dt.Year.ToString();
                dt1 = Convert.ToDateTime(e.Row.Cells[5].Text);
                e.Row.Cells[5].Text = dt1.Month.ToString() + "/" + dt1.Day.ToString() + "/" + dt1.Year.ToString();
            }
    }
}

答案 1 :(得分:0)

你试过一次简单的检查吗?

类似

if (!String.IsNullOrEmpty(e.Row.Cells[4].Text))
    e.Row.Cells[4].Text = Convert.ToDateTime(e.Row.Cells[4].Text).ToString("MM/dd/yyyy");
else
    e.Row.Cells[4].Text = "-";

答案 2 :(得分:0)

如何设置BoundField.DataFormatString和BoundField.NullDisplayText属性,如:

<asp:GridView ID="BoundFieldExample" runat="server">
     <Columns>
          <asp:BoundField DataFormatString="{0:d}" NullDisplayText="Not Found" />
     </Columns>
</asp:GridView>

上面将显示当前文化的短日期字符串格式的日期和Null值的文本“Not Found”。 有关详细信息,请参阅GridView BoundField Class