【问题标题】:How can you show the date in a gridview as a date only instead of a datetime?如何将网格视图中的日期仅显示为日期而不是日期时间?
【发布时间】:2011-08-29 20:45:53
【问题描述】:

我正在使用 gridview 从 sql server 数据库中提取日期值,并且日期从

2009 年 12 月 12 日 2009 年 12 月 12 日凌晨 12:00:00

如何防止这种情况发生?

谢谢!

【问题讨论】:

    标签: asp.net entity-framework gridview


    【解决方案1】:

    您可以使用带有掩码的ToString() 方法:

    ToString("MM/dd/yyyy");
    

    更新:刚刚意识到在您的情况下,在网格视图模板中执行此操作会更容易

    <asp:BoundField DataField="MyDate" DataFormatString="{0:MM/dd/yyyy}" />
    

    【讨论】:

    • 谢谢,我一直在寻找
    【解决方案2】:

    您可以像这样在绑定列中设置日期格式

    <itemtemplate>
    <asp id="Label1" runat="server" Label.Text='<%# Bind("YourDateField", "{0:M-dd-yyyy}") %>'>;
    </asp>
    </itemtemplate>
    

    【讨论】:

    • 您也可以在 Eval 中使用相同的语法。例如Text='' />
    【解决方案3】:

    将数据格式字符串值设置为“{0:d}”

    例如:

    <asp:BoundField HeaderText="Date" DataField="Date_Field" ReadOnly="True" DataFormatString="{0:d}">
    </asp:BoundField>
    

    【讨论】:

      【解决方案4】:

      asp:Label runat="server" Text=''

      尝试添加 "{0:M-dd-yyyy}"

      asp:Label runat="server" Text=', "{0:M-dd-yyyy}") %>'

      【讨论】:

        【解决方案5】:

        如果您已经在 RowDataBound 中操作日期,也可以在 DateTime 对象上使用.ToShortDateString()

        【讨论】:

          【解决方案6】:

          您可以使用 DataAnnotations 属性和 DynamicField 控件;那么您不必在每次要格式化该字段时都进行相同的格式化。 这里有一个例子展示了如何做到这一点: http://www.asp.net/entity-framework/tutorials/the-entity-framework-and-aspnet-%E2%80%93-getting-started-part-8

          【讨论】:

            【解决方案7】:

            当您从数据库中选择字段时,您可以在选择中将其转换为字符串:

            convert(varchar, myDate, 101)
            

            【讨论】:

              【解决方案8】:

              试试下面的代码:

                  <asp:BoundField DataField="my_date" HeaderText="Date" 
                                          ReadOnly="True" SortExpression="my_date" 
                                          DataFormatString="{0:d}" />
              

              在上面提到的代码中,my_date 是 sqlserver 表的日期列。 DataFormatString="{0:d}" 是此代码的主要部分,用于解决您的特定问题。

              【讨论】:

                【解决方案9】:
                for (int j = 0; j < gv_bill_dmd_process_create.Rows.Count; j++)
                                {
                                    GridViewRow row_fees = (GridViewRow)gv_bill_dmd_process_create.Rows[j];
                                    TextBox gv_chk_bill_dept = row_fees.FindControl("txt_gv_DmdProsDuedate") as TextBox;
                                    AjaxControlToolkit.CalendarExtender gv_chk_bill_dept1 = row_fees.FindControl("txt_gv_DmdProsDuedate_CalendarExtender") as AjaxControlToolkit.CalendarExtender;
                                    gv_chk_bill_dept1.StartDate = fromdate;
                                    gv_chk_bill_dept1.EndDate = todate;
                                }
                

                【讨论】:

                  【解决方案10】:

                  在获取日期字段的查询中使用它

                  CONVERT(VARCHAR,date column name,103) as date
                  

                  例如:select column1,column2,CONVERT(VARCHAR,date column name,103) as date from tablename

                  【讨论】:

                  • 使用 SQL 转换会限制您从数据库返回的数据量。最好使用格式化功能。
                  猜你喜欢
                  • 2019-03-10
                  • 2021-07-24
                  • 1970-01-01
                  • 2022-12-10
                  • 2015-11-14
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-03-06
                  相关资源
                  最近更新 更多