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”
任何解决方案请帮忙??!
谢谢你!答案 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。