从数据库中提取数据时如何在 GridView 中仅显示日期? C#

Posted

技术标签:

【中文标题】从数据库中提取数据时如何在 GridView 中仅显示日期? C#【英文标题】:How to display only date in GridView when pulling data from a DB? C# 【发布时间】:2014-02-24 10:11:34 【问题描述】:

我正在从访问数据库中提取数据以显示在 ASP.NET 项目的 GridView 控件中。它工作正常,但我想看看我是否可以格式化正在提取的数据。目前,任何货币都从 xx.xx 截断为仅美元金额。日期也显示 mm/dd/yyyy hh/mm/ss AM/PM

我尝试将数据库本身编辑为正确的值(我将货币字段设置为“货币”,将日期字段设置为“短日期”,但当我拉出该日期时,它仍然显示它们未格式化。

编辑:抱歉,不得不记下代码

有什么想法吗? 谢谢

【问题讨论】:

请用一些示例代码编辑您的问题。 刚刚添加了代码。谢谢 请从 aspx 页面为 gridview 添加标记。可能需要为列设置格式字符串。 【参考方案1】:

在你的网格视图中添加名为DataFormatString的属性

DataFormatString 示例:

0:dd MMMM yyyy - 2006 年 2 月 24 日 0:MMM dd - 给出 2 月 24 日(用 MMMM 代替 MMM 来代替完整的月份名称 而不是缩写) 0:dd/MM/yy - 给出 24/02/06 0:dd/MM/yyyy - 给出 24/02/2006

示例代码

<asp:BoundField HeaderText="Date" 
                DataField="SampleDate" 
                DataFormatString="0:MM/dd/yyyy"  >

MSDN BoundField.DataFormatString Property

【讨论】:

谢谢!这很好用,但现在我得到了格式化的列,在它们旁边还有另一组来自未格式化的代码生成的列。我使用的代码: Amarnath,我没有收到任何错误但重复的列,例如:goo.gl/BVbprD 在grid中添加autogeneratecolumns为false这个属性要加在GridView的ID后面 使用 DataFormatString="0:d" 将其本地化为任何文化。【参考方案2】:

您只需要根据您希望的填充方式设置数据格式字符串。

如 MSDN 页面所示:

金钱:

<asp:BoundColumn HeaderText="Price" DataField="Price"
                                     DataFormatString="0:c" />

使用 0:c,在 c 值之后放置一个数字(例如 0:c2)将为您提供那么多小数位。

日期:

<asp:boundfield datafield="MyDate" dataformatstring="0:MM/dd/yyyy" />

【讨论】:

【参考方案3】:

一种解决方案是:

  <asp:GridView ID="gvLEmployees" runat="server" AutoGenerateColumns="false" >
                                <Columns>
                                    <asp:TemplateField HeaderText="Name">
                                        <ItemTemplate>

                                                <%# Eval("Name")  %>                             
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Date">
                                        <ItemTemplate>
                                             <%# Convert.ToDateTime(Eval("JoinDate")).ToShortDateString() %>
OR
<%# Convert.ToDateTime(Eval("JoinDate")).ToString("d") %>
                                        </ItemTemplate>

                                    </asp:TemplateField>
        </Column>
        </Gridview>

【讨论】:

【参考方案4】:

您必须创建一个BoundField,设置它的属性,包括属性dataformatstring,您可以使用该属性设置GridView中出现的字段格式,并将其添加到GridView控件中。

下面是一些代码

 public GridView Cr_GridView(string[] ColNames,string[] ColLable, string[] ColFormat)
        
            GridView GV = new GridView();
            int x = ColNames.GetUpperBound(0);

            for (int i = 0; i < x; i++)
            
                BoundField GvField = new BoundField();

                GvField.DataField = ColNames[i];
                GvField.HeaderText = ColLable[i];
                GvField.DataFormatString = ColFormat[i];// for example "0:dd/MM/yyyy" for a date field

                GV.Columns.Add(GvField);
            
            return GV;
         

【讨论】:

以上是关于从数据库中提取数据时如何在 GridView 中仅显示日期? C#的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何从数据框中仅提取年月日[重复]

如何从日期时间对象中仅提取月份和日期?

如何使用 nltk 从大文本语料库中仅提取英文单词?

如何在 uwp 应用程序中仅使部分 gridview 项目可点击?

如何从网址中仅提取域名? [复制]

如何使用 REGEXP sql 从字符串中仅提取 5 位数字