Я привязываю 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.