powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Формат даты в Calendar
7 сообщений из 7, страница 1 из 1
Формат даты в Calendar
    #37441110
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Среда - ASP 4, IIS 7.5, Win7 x64
Пытаюсь выбрать дату через стандартный Calendar для записи в БД (MS SQL 2008) - выбираю одну, а заносится совсем другая, что самое интересное - число и месяц заносится правильно, а год - нет, например - я выбираю 17.09.2011, а в базу записывается почему-то 17.09.2002, и всегда 2002, что самое интересное!))

Связывание произвожу как:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 <asp:TemplateField HeaderText="Дата поставки товара">
    <ItemTemplate> 
      <asp:Label ID="lblDelivery" Runat="Server" Text='<%# Eval("DeliveryDate_field", "{0:d}") %>' />
    </ItemTemplate>
    <EditItemTemplate>
      <asp:Calendar ID="calDeliveryDate" Runat="Server"  SelectedDate='<%# Bind("pDeliveryDate") %>'  />
    </EditItemTemplate>
  </asp:TemplateField> 
Параметр pDeliveryDate имеет тип datetime.

Если вместо Bind("pDeliveryDate") писать Bind("pDeliveryDate", "{0:d}") выдает ошибку авторCannot convert type 'string' to 'System.DateTime'

В каком формате храится дата в свойстве Selected Date календаря и как её правильно преобразовать? Что делаю не так?
И чем вообще из стандартного инструментария обычно выбирают дату для записи в базу, кроме сторонних контролов (AJAX и jQuery picker-ов)?
...
Рейтинг: 0 / 0
Формат даты в Calendar
    #37441124
Фотография n_string
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри свойства календаря, там можно формат даты выбрать.
...
Рейтинг: 0 / 0
Формат даты в Calendar
    #37441138
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n_stringПосмотри свойства календаря, там можно формат даты выбрать.

А можно тыкнуть носом? А то весь раздел Calendar в msdn скурил, но так и не нашел.

Самое интересное, только что меня осенило заглянуть в profiler сервера и оказывает на сервер дата посылается правильная (с 2011 годом), вот пример того, что я там увидел:

Код: plaintext
1.
2.
3.
declare @p1 int
set @p1= 329 
exec dbo.sp_Products_InsertProduct @ProductID=@p1 output,@Vendor='пропрро',@ProductNameShort='ворпо',@ProductNameFull='пропрро ворпо',@Price=$ 4645 . 0000 ,@DeliveryDate='2011-09-30 00:00:00',@GroupID= 100 ,@DiscountPercentage= 100 ,@InStock= 5 
select @p1

Значит её корежит уже на сервере, но почему?????
...
Рейтинг: 0 / 0
Формат даты в Calendar
    #37441155
Фотография n_string
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что она строкой приходит и сервер пытается конвертировать перед тем, как вставить в поле DateTime.
Вообще-то для Insert специальные методы есть, а так тупо строкой DateTime или Int никто не вставляет.
...
Рейтинг: 0 / 0
Формат даты в Calendar
    #37441181
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n_stringПотому что она строкой приходит и сервер пытается конвертировать перед тем, как вставить в поле DateTime.
Вообще-то для Insert специальные методы есть, а так тупо строкой DateTime или Int никто не вставляет.

Ну почему же тупо?, вроде, делаю все по-науке)):
Есть DetailsView, в котором есть вышеупомянутое поле TemplateField с календарем. Этот DetailsView подключен к ObjectDataSource, к коорму, в свою очередь, которому прицеплен бизнес-объект, где поле pDeliveryDate имеет тип DateTime.

Сигнатура метода вставки бизнес-объекта:
Код: plaintext
        public static int InsertProduct(int pProductID, int pGroupID, ..., DateTime pDeliveryDate, decimal pPrice)

Вставка выполняется хранимкой.

В ObjectDataSource указан параметр вот так:
Код: plaintext
1.
2.
3.
4.
5.
<InsertParameters>
         <asp:Parameter Name="pProductID" Type="Int32" />
         <asp:Parameter Name="pVendor" Type="String" />
          ...
        <asp:Parameter Name="pDeliveryDate"  Type="DateTime" />
</InsertParameters>
Параметр этот вытягиваетс, как я уже писал, через '<%# Bind("pDeliveryDate") %>'

Где собака зарыта?

Может ли какая-то локаль на сервере влиять на это? А-то у меня SSMS стремная - все жизнь с английской работал, а тут русскую поставил, надпись "НЕ NULL" в св-вах столбцов смотрится меня убивает))))))
Для полного колорита надо было перевести "НЕ НОЛЬ"))
...
Рейтинг: 0 / 0
Формат даты в Calendar
    #37441279
Фотография n_string
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постарайся в методе OnInserting подобрать правильный формат даты.
Обычно пишу методы вручную, кто знает как эти датасорсы работают,
убираю InsertParameters вообще, оставляю только метод Insert.
...
Рейтинг: 0 / 0
Формат даты в Calendar
    #37443177
Dezmond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
n_stringПостарайся в методе OnInserting подобрать правильный формат даты.
Обычно пишу методы вручную, кто знает как эти датасорсы работают,
убираю InsertParameters вообще, оставляю только метод Insert.

А еще мысли есть какие-нибудь?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Формат даты в Calendar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]