将datetime对象转换为asp.net数据表中的仅日期格式

时间:2019-02-26 20:02:09

标签: c# asp.net datetime datatable

我试图在asp.net gridview中显示一个SQL Server表。 SQL Server数据库中有很多表,用户选择一个表,该表应显示在gridview中。对于sql server表中的所有datetime列,我只需要显示日期。

我使用SQLDataReader读取数据并将数据加载到数据表中。如果单元格是日期类型,那么我正尝试将其转换为仅日期格式,如下图所示。

enter image description here

我厌倦了使用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];
        }
    }                        
}

1 个答案:

答案 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");        
    }
}