asp.net форматирование dateTime в gridview - PullRequest
10 голосов
/ 07 мая 2009

Я связываю gridview динамически из таблицы в моей базе данных, которую я назвал «Sessions». Я получаю информацию из метода, используя запрос linq, который выглядит примерно так:

var s = from sessions in datacontext.Sessions
                    where sessions.test == id
                    orderby sessions.ID ascending
                    select sessions;
gridView.DataSource = qsessions;
gridView.DataBind();

Сеансы содержат поле dateTime, которое я хочу свернуть, чтобы просто отображать дату (месяц / день / год). Исходя из того, что я прочитал в поиске Google, решение состоит в том, чтобы указать форматирование в разметке aspx вида grid, используя что-то вроде:

<asp:TextBox ID="txtDate" runat="server" Text='<%# Eval("dateTime", "{0:MM/dd/yyyy}") %>'></asp:TextBox>

Кажется, он не работает и все еще показывает время после даты. Я что-то упускаю? Помощь очень ценится!

Ответы [ 6 ]

22 голосов
/ 07 мая 2009

Попробуйте:

<asp:TextBox ID="txtDate" runat="server" Text='<%# Convert.ToDateTime(Eval("dateTime")).ToString("d") %>'></asp:TextBox>

См. Этот полезный сайт для получения дополнительной информации о форматировании:

http://www.mikesdotnetting.com/Article.aspx?ArticleID=23

3 голосов
/ 07 мая 2009

Реализация события OnDataBinding для TextBox в сетке.

<asp:TextBox ID="txtDate" runat="server" OnDataBinding="txtDate_DataBinding">
</TextBox>

Затем в вашем коде позади реализуйте событие OnDataBinding:

protected void txtDate_OnDataBinding(object sender, System.EventArgs e)
{
    TextBox txt = (TextBox)(sender);
    txt.Text = (DateTime)(Eval("YourDateField")).ToString("MM/dd/yyyy");
}

Я предпочитаю иметь весь код в коде позади и ничего на странице aspx, но вы также можете вставить его туда. Вот ссылка на ветку, где я описываю, почему я предпочитаю делать это в codebehind:

OnDataBinding против Inline: плюсы, минусы и накладные расходы

2 голосов
/ 18 октября 2013

Gridview поддерживает форматирование даты через DataFormatString. Например -

<asp:BoundField DataField="Date" HeaderText="Visit date" DataFormatString="{0:dd-MMM-yyyy}" >                               
                            </asp:BoundField> 

и выглядит так-

Дата посещения
15-Октябрь-2013
12-Октябрь-2013
11-Октябрь-2013

2 голосов
/ 06 декабря 2012

ASP gridview поддерживает формат даты, попробуйте добавить

DataFormatString="{0:dd-MM-yyyy}"
1 голос
/ 12 июля 2012
<asp:Label ID="lblDateBudget" runat="server" Text='<%# Eval("DateBudget", "{0:MM/d/yyyy}")%>'></asp:Label>

Здравствуйте, друзья, вот другой вид решения проблемы, который вы определили выше. Вы просто устанавливаете дату вашего типа данных, а не дату и пробуете доступ таким образом. Я надеюсь, что это будет полезно для вас.

0 голосов
/ 07 мая 2009

Я думаю, что ваша переменная datetime оценивается как String. Попробуйте привести его к DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...