установить строку формата даты как d / M / гггг и htmlencode = false в программно созданном виде сетки - PullRequest
1 голос
/ 11 декабря 2010

MyDataSource - это источник данных, который хранится в сеансе, проходящем через страницу поиска.

  protected void Page_Load(object sender, EventArgs e)
{

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




}

gridview1 - это представление таблицы без источника данных, ожидающего событие загрузки страницы, чтобы связать его с источником данных, в моем случае это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>

даты, отображаемые в этом виде сетки, как M / d / гггг + время, например, 31.12.2010 00: 00: 00

Мой вопрос: мне нужен способотображать дату как d / M / гггг без времени, например 31/12/2010, обычно я делаю это, устанавливая свойства gridview htmlencode = false и dateformatstring = "{0: M-dd-yyyy}", но в этом случае gridviewНе показывать никакие поля, потому что они связывают данные только во время выполнения

, пожалуйста, мне нужна ваша помощь в этом вопросе как можно скорее.заранее спасибо

Ответы [ 2 ]

3 голосов
/ 11 декабря 2010

Попробуйте использовать этот код:

<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>

Он отлично работает на моем компьютере.Надеюсь, это поможет вам.

С уважением, Дима.

2 голосов
/ 11 декабря 2010

Вид сетки не будет показывать никаких данных, если вы не укажете, что показывать.

Быстрое исправление будет выглядеть примерно так:

<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>

и затем в вашем коде:

protected void gridview1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.DataItem != null)
    {
        var item = (MyCustomDataBoundObject)e.Row.DataItem;
        var dateLabel = (Label)gridview1.FindControl("dateLabel");
        dateLabel.Text = item.Date.ToString("dd/MM/yyyy");
    }
}

Выше не проверено, но этого должно быть достаточно, чтобы получить то, о чем вы спрашиваете.

Из любопытства, почему вы передаете источник данных через сеанс?Я ничего не знаю о вашем приложении, но я никогда не использовал этот подход раньше.Почему бы просто не связать представление сетки с источником данных объекта, который вы определили на своей странице aspx?Тогда вы можете использовать простой связанный столбец.

...