Я извлекаю значения даты из базы данных сервера sql, используя gridview, и дата преобразуется из
12/12/2009 в 12/12/200912:00:00
Как мне предотвратить это?
Спасибо!
Вы можете использовать метод ToString() с маской:
ToString()
ToString("MM/dd/yyyy");
ОБНОВЛЕНИЕ: Просто понял, что в вашем случае было бы проще сделать это в шаблоне вида сетки
<asp:BoundField DataField="MyDate" DataFormatString="{0:MM/dd/yyyy}" />
Вы можете установить формат даты в связанном столбце следующим образом
<itemtemplate> <asp id="Label1" runat="server" Label.Text='<%# Bind("YourDateField", "{0:M-dd-yyyy}") %>'>; </asp> </itemtemplate>
установить значение dataformatstring равным "{0: d}"
Ex:
<asp:BoundField HeaderText="Date" DataField="Date_Field" ReadOnly="True" DataFormatString="{0:d}"> </asp:BoundField>
В пределах
asp: Label runat = "server" Text = '<% # Eval ("DateAndTime")%>'
Попробуйте добавить "{0: M-dd-гггг}"
asp: Label runat = "server" Text = '<% # Eval ("DateAndTime" <strong>, "{0:М-дд-гггг} ")%> '
Вы также можете использовать .ToShortDateString() для объекта DateTime , если вы уже манипулируете датой в RowDataBound
.ToShortDateString()
Вы можете использовать атрибут DataAnnotations и элемент управления DynamicField;тогда вам не нужно делать одно и то же форматирование каждый раз, когда вы хотите отформатировать это поле.Вот пример, показывающий, как это сделать здесь: http://www.asp.net/entity-framework/tutorials/the-entity-framework-and-aspnet-%E2%80%93-getting-started-part-8
for (int j = 0; j < gv_bill_dmd_process_create.Rows.Count; j++) { GridViewRow row_fees = (GridViewRow)gv_bill_dmd_process_create.Rows[j]; TextBox gv_chk_bill_dept = row_fees.FindControl("txt_gv_DmdProsDuedate") as TextBox; AjaxControlToolkit.CalendarExtender gv_chk_bill_dept1 = row_fees.FindControl("txt_gv_DmdProsDuedate_CalendarExtender") as AjaxControlToolkit.CalendarExtender; gv_chk_bill_dept1.StartDate = fromdate; gv_chk_bill_dept1.EndDate = todate; }
Попробуйте следующий код:
<asp:BoundField DataField="my_date" HeaderText="Date" ReadOnly="True" SortExpression="my_date" DataFormatString="{0:d}" />
В приведенном выше коде my_date - это столбец даты таблицы sqlserver.DataFormatString="{0:d}" является основной частью этого кода для решения вашей конкретной проблемы.
my_date
DataFormatString="{0:d}"
используйте это в запросе, где вы получаете поле даты
CONVERT(VARCHAR,date column name,103) as date
например: select column1,column2,CONVERT(VARCHAR,date column name,103) as date from tablename
select column1,column2,CONVERT(VARCHAR,date column name,103) as date from tablename
когда вы выбираете поле из базы данных, вы можете преобразовать его в строку выбора:
convert(varchar, myDate, 101)