Asp.net 在以编程方式创建的gridview中,将日期格式字符串设置为d/M/yyyy和htmlencode=false

Asp.net 在以编程方式创建的gridview中,将日期格式字符串设置为d/M/yyyy和htmlencode=false,asp.net,gridview,date-format,Asp.net,Gridview,Date Format,MyDataSource是存储在通过搜索页面传递的会话中的数据源 protected void Page_Load(object sender, EventArgs e) { gridview1.DataSource = Session["MyDataSource"]; gridview1.DataBind(); } gridview1是一个gridview,没有数据源等待页面加载事件将其绑定到数据源,在我的示例中,它是MyDataSource <asp:G

MyDataSource是存储在通过搜索页面传递的会话中的数据源

  protected void Page_Load(object sender, EventArgs e)
{

    gridview1.DataSource = Session["MyDataSource"];
    gridview1.DataBind();




}
gridview1是一个gridview,没有数据源等待页面加载事件将其绑定到数据源,在我的示例中,它是MyDataSource

<asp:GridView ID="gridview1" runat="server" BackColor="LightGoldenrodYellow" 
    BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" 
    GridLines="None">
    <AlternatingRowStyle BackColor="PaleGoldenrod" />
    <FooterStyle BackColor="Tan" />
    <HeaderStyle BackColor="Tan" Font-Bold="True" />
    <PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" 
        HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
    <SortedAscendingCellStyle BackColor="#FAFAE7" />
    <SortedAscendingHeaderStyle BackColor="#DAC09E" />
    <SortedDescendingCellStyle BackColor="#E1DB9C" />
    <SortedDescendingHeaderStyle BackColor="#C2A47B" />
</asp:GridView>
此gridview中显示的日期显示为M/d/yyyy+时间 例如2010年12月31日00:00:00

我的问题是:我需要一种方法来显示日期为d/M/yyyy,例如没有时间 31/12/2010 通常我通过设置gridview属性htmlencode=false和dateformatstring={0:M-dd-yyyy}来实现这一点 但在这种情况下,gridview不显示任何字段,因为它仅在运行时绑定数据

请尽快帮我解决这个问题。
提前感谢

除非您告诉gridview显示什么,否则它不会显示任何数据

快速修复方法如下所示:

<asp:GridView ID="gridview1" runat="server" OnRowDataBound="gridview1_RowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label ID="dateLabel" runat="server" />
            <ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
以上内容未经测试,但应足以满足您的要求


出于好奇,为什么要通过会话传递数据源?我对你的应用程序一无所知,但我以前从未使用过这种方法。为什么不将gridview绑定到您在aspx页面中定义的objectdatasource?然后您可以使用一个简单的绑定列。

gridview不会显示任何数据,除非您告诉它要显示什么

快速修复方法如下所示:

<asp:GridView ID="gridview1" runat="server" OnRowDataBound="gridview1_RowDataBound">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Label ID="dateLabel" runat="server" />
            <ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
以上内容未经测试,但应足以满足您的要求

出于好奇,为什么要通过会话传递数据源?我对你的应用程序一无所知,但我以前从未使用过这种方法。为什么不将gridview绑定到您在aspx页面中定义的objectdatasource?然后可以使用一个简单的绑定列。

尝试使用以下代码:

<asp:GridView ID="gridview1" runat="server" BackColor="LightGoldenrodYellow" 
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" 
GridLines="None" AutoGenerateColumns="false">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<FooterStyle BackColor="Tan" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" 
    HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<SortedAscendingCellStyle BackColor="#FAFAE7" />
<SortedAscendingHeaderStyle BackColor="#DAC09E" />
<SortedDescendingCellStyle BackColor="#E1DB9C" />
<SortedDescendingHeaderStyle BackColor="#C2A47B" />

<Columns>
    <asp:BoundField DataField="PropertyName" />
    <asp:BoundField DataField="PropertyName" />
    <asp:BoundField DataField="DateTimeProperty" DataFormatString="{0:dd/M/yyyy}" />
</Columns>
它在我的电脑里工作得很好。希望它能帮助你

致以最良好的祝愿, Dima。

尝试使用以下代码:

<asp:GridView ID="gridview1" runat="server" BackColor="LightGoldenrodYellow" 
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" 
GridLines="None" AutoGenerateColumns="false">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<FooterStyle BackColor="Tan" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" 
    HorizontalAlign="Center" />
<SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<SortedAscendingCellStyle BackColor="#FAFAE7" />
<SortedAscendingHeaderStyle BackColor="#DAC09E" />
<SortedDescendingCellStyle BackColor="#E1DB9C" />
<SortedDescendingHeaderStyle BackColor="#C2A47B" />

<Columns>
    <asp:BoundField DataField="PropertyName" />
    <asp:BoundField DataField="PropertyName" />
    <asp:BoundField DataField="DateTimeProperty" DataFormatString="{0:dd/M/yyyy}" />
</Columns>
它在我的电脑里工作得很好。希望它能帮助你

致以最良好的祝愿,
Dima。

嗨,Pandincus,我对ASP.NET和C还是新的,我可能犯了一个错误,把数据源放在一个会话中,我会考虑你的建议。我有两个问题:1-我不知道应该放什么来代替MyCustomDataBoundObject,我应该用gridview替换吗?2-我的gridview中有3个不同的日期:出生日期、开始日期和结束日期。。我不确定你的代码是否能处理三个问题dates@mokokamello:没关系,你可以照迪玛的建议去做。我不知道为什么,但出于某种原因,我认为数据绑定列不能与page_load事件中声明的数据源一起工作。@mokokamello:但是如果您想遵循我的代码,您可以用从数据源中提取的任何内容替换MyCustomDataBoundObject。我不知道那是什么,因为我不知道你的数据源在做什么。要处理3个日期,您需要创建3个模板字段。但正如我所说,最简单的解决方案是Dima的解决方案below.hi Pandincus,我仍然是ASP.NET和C的新手,我可能犯了一个错误,将数据源放在一个会话中,我会考虑您的建议。我有两个问题:1-我不知道应该放什么来代替MyCustomDataBoundObject,我应该用gridview替换吗?2-我的gridview中有3个不同的日期:出生日期、开始日期和结束日期。。我不确定你的代码是否能处理三个问题dates@mokokamello:没关系,你可以照迪玛的建议去做。我不知道为什么,但出于某种原因,我认为数据绑定列不能与page_load事件中声明的数据源一起工作。@mokokamello:但是如果您想遵循我的代码,您可以用从数据源中提取的任何内容替换MyCustomDataBoundObject。我不知道那是什么,因为我不知道你的数据源在做什么。要处理3个日期,您需要创建3个模板字段。但正如我所说,最简单的解决方案是下面的Dima的解决方案。Dima,它对我很好,但没有标题。你能告诉我如何添加header@mokokamello:asp:BoundField具有用于设置标题的属性。我相信它的负责人特提迪玛和潘丁卡斯:多亏了你们两位,你们都很棒,乐于助人,很高兴在星期五认识你们StackOverFlow@Dima:还有一个问题:现在列是重复的,例如,我在同一个gridview中有一个DateOfBirth=31/12/1980和另一个DateOfBirth=31/12/1980 00:00:00,你有什么建议吗solution@mokokamello您是否将AutoGenerateColumns设置为false?如果没有,请自己使用Dima设置它并设置列列表,这样对我来说效果很好,但没有标题。你能告诉我如何添加header@mokokamello:asp:BoundField具有用于设置标题的属性。我相信它的负责人特提迪玛和潘丁卡斯:多亏了你们两位,你们都很棒,乐于助人,很高兴在星期五认识你们StackOverFlow@Dima:还有一个问题:现在列是重复的,例如,我在同一个gridview中有一个DateOfBirth=31/12/1980和另一个DateOfBirth=31/12/1980 00:00:00,你有什么建议吗solution@mokokamello您是否设置了AutoGenerateColumns=fals E如果没有,则使用设置它并自己设置列列表