我在datatable中修改了数据。列ExpireDate返回日期+时间,尽管我只需要日期。我正在成功地读取每一行以返回正确的格式,但是如何将这个修改过的日期列返回到表中,以便在我的web表单中显示它?
con.Open();
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
foreach (DataRow dr in dt.Rows)
{
dr["ExpireDate"] = DateTime.Parse((dr["ExpireDate"].ToString())).ToShortDateString();
}
sda.Fill(dt);
tblBoard.DataSource = dt;
tblBoard.DataBind();
con.Close();
}这是网页表格:
<asp:GridView ID="tblBoard" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="FirstName" HeaderText="First Name" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" />
<asp:BoundField DataField="ExpireDate" HeaderText="Expire Date" />
</Columns>
</asp:GridView>旧的日期格式仍显示在表中。
发布于 2019-01-19 05:24:05
不要更改存储在DataTable本身中的值..。相反,请通过指定一个DataFormatString来修改显示给用户的方式。
<asp:BoundField DataField="ExpireDate"
HeaderText="Expire Date"
DataFormatString="{0:dd/MM/yyyy}" />数据和数据的表示是两件截然不同的事情。我想您可以使用string列,然后只显示要显示的日期的部分,但是使用这种格式更好,因为有人可以很容易地介入并更改日期在未来的显示方式,而不需要触摸数据。
发布于 2019-01-19 08:16:40
如果从后端更改日期格式,而该日期不反映在前端,则一旦尝试删除浏览器的捕获,然后再试一次。
另外,另一种解决方案是不需要在后端使用for循环。直接将表数据绑定到网格视图数据源,并且只将前端设置为DataFormatString。
<asp:BoundField DataField="ExpireDate" HtmlEncode="false"
DataFormatString="{0:d}" />或
<asp:BoundField DataField="ExpireDate" HtmlEncode="false"
DataFormatString="{0:MM/dd/yyyy}" />https://stackoverflow.com/questions/54264264
复制相似问题