我试图在asp.net gridview中显示一个SQL Server表。 SQL Server数据库中有很多表,用户选择一个表,该表应显示在gridview中。对于sql server表中的所有datetime列,我只需要显示日期。
我使用SQLDataReader读取数据并将数据加载到数据表中。如果单元格是日期类型,那么我正尝试将其转换为仅日期格式,如下图所示。
我厌倦了使用date.toString(“ MM / dd / yyyy”)转换日期,但是无法在数据表中对其进行编辑。图像中的变量a随时间显示整个日期。任何人都可以帮助您进行必要的更改,以便在日期列中仅显示日期。
我最初尝试将变量b值推送到数据表,但无法成功,然后尝试再次将其转换为日期并尝试。什么都没变:(
编辑:这是代码
for (int i =0; i<table.Rows.Count;i++)
{
DataRow row = table.Rows[i];
for (int j = 0; j < table.Columns.Count; j++)
{
string t = table.Rows[i][j].GetType().ToString();
if (table.Rows[i][j].GetType().Equals(typeof(DateTime)))
{
mydate = DateTime.Parse(table.Rows[i][j].ToString());
var b = mydate.Month + "/" + mydate.Day + "/" + mydate.Year;
var c = DateTime.Parse(b.ToString());
var d = c.ToString("MM/dd/yyyy");
table.Rows[i].SetField(j, c.ToString("MM/dd/yyyy"));
var a = table.Rows[i][j];
}
}
}
答案 0 :(得分:1)
似乎您要在后端代码中解决UI问题。应该在用户界面侧解决此问题,而不会影响您的实际数据。您可以通过将格式应用于绑定列或模板来完成此操作:
<asp:BoundField DataField="PurchaseDate" HeaderText="Purchase Date" DataFormatString="{0:MM/dd/yyyy}" />
OR
<asp:TemplateField HeaderText ="Purchase Date" >
<ItemTemplate >
<asp:Label ID="lblDate" runat="server"
Text='<%# Eval("PurchaseDate", "{0:MM/dd/yyyy}") %>' />
</ItemTemplate>
</asp:TemplateField>
编辑:
@DineshInavolu为什么不尝试使用rowdatabound事件和TryParse?
void OrderGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
DateTime? dateValue = null;
if(!DateTime.TryParse(e.Row.Cells[1].Text, out dateValue))
e.Row.Cells[1].Text = dateValue.Value.ToString("MM/dd/yyyy");
}
}