Asp.net форматирование dateTime в gridview

Я привязываю gridview динамически из таблицы в моей базе данных, которую я назвал "Сессии". Я получаю информацию из метода, используя запрос 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 gridview, используя что-то вроде:

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

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

Ответ 1

Try:

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

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

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

Ответ 2

Внедрить событие 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 vs Inline: плюсы, минусы и накладные расходы

Ответ 3

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

DataFormatString="{0:dd-MM-yyyy}"

Ответ 4

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

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

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

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

Ответ 5

<asp:Label ID="lblDateBudget" runat="server" Text='<%# Eval("DateBudget", "{0:MM/d/yyyy}")%>'></asp:Label>

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

Ответ 6

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