2015-10-07 5 views
0

У меня есть сайт (.Net), используя Daypilot pro (7.9) и ajaxtoolkit: CalendarExtender. Используется для бронирования дат в Dynamics, и это работает как шарм. UNTIL я выбираю дату в 2016 году. Когда я выбираю дату или номер недели в 2016 году, календарь возвращается к неделе до выбранной недели. Я использую шведский формат, и единственный ключ, который у меня есть, заключается в том, что в 2015 году есть 53 недели, а daypilot может смутить это?daypilot calendar, показывающий неправильную неделю

Вот код (время выбора даты происходит от ajaxtoolkit)

<div id="divCalendar" runat="server" style="float: left; width: 90px; height:25px; margin-top: 2px;"> 
    <ajaxToolKit:CalendarExtender ID="calendar" runat="server" TargetControlID="dateTimeTextBox" 
     Format="yyyy-MM-dd" PopupButtonID="popupButton" firstDayOfWeek="Monday" /> 
    <asp:TextBox ID="dateTimeTextBox" runat="server" CssClass="inputfields" Width="80px" AutoPostBack="true" 
     OnTextChanged="DateTime_Changed" /> 
    <asp:CompareValidator ID="dateTimeTextBoxFormat" runat="server" ControlToValidate="dateTimeTextBox" 
     Operator="DataTypeCheck" Type="Date" ErrorMessage="yyyy-mm-dd." Display="Dynamic" 
     ValidationGroup="DateTime" /> 
    <asp:RequiredFieldValidator ID="dateTimeTextBoxRequired" runat="server" ControlToValidate="dateTimeTextBox" 
     ErrorMessage="*" Display="Dynamic" ValidationGroup="DateTime" /> 
</div> 
<div id="divCalendarButton" runat="server" style="float: left; width: 39px; margin-right: 12px;"> 
    <asp:Image ID="popupButton" runat="server" ImageUrl="/_imgs/btn_on_cal.gif" Style="cursor: pointer; height: 25px; padding-top: 3px;" /> 
</div> 
<div id="divTime" runat="server" style="margin-left: 7px; padding-top: 3px;"> 
    <asp:DropDownList ID="dropDownHours" runat="server" AutoPostBack="true" /> 
    <asp:DropDownList ID="dropDownMinutes" runat="server" AutoPostBack="true" /> 
</div> 

А вот DayPilot часть:

<div style="float: left; padding: 5px;"> 

<DayPilot:DayPilotCalendar ID="dayPilotCalendar" runat="server" DataStartField="Start" 
    DataEndField="End" DataTextField="Name" DataValueField="Id" DataTagFields="ActivityTypeName, ColorCode, Status" 
    BusinessBeginsHour="8" BusinessEndsHour="18" CellDuration="15" CellHeight="13" 
    HeightSpec="BusinessHours" ShowAllDayEvents="true" AllDayEnd="Date" ShowAllDayEventStartEnd="false" 
    EventClickHandling="JavaScript" EventClickJavaScript="viewEvent(e);" EventDoubleClickHandling="JavaScript" 
    EventDoubleClickJavaScript="editEvent(e);" DataAllDayField="WholeDayActivity" 
    TimeRangeSelectedHandling="JavaScript" TimeRangeSelectedJavaScript="createEvent(start, end, resource);" 
    TimeRangeDoubleClickHandling="JavaScript" TimeRangeDoubleClickJavaScript="createEvent(start, end, resource);" 
    ContextMenuID="DayPilotMenuActivity" OnBeforeEventRender="OnBeforeEventRender" 
    BubbleID="ActivityCalendarBubble" ShowToolTip="false"> 
</DayPilot:DayPilotCalendar> 

Я надеюсь, что кто-то может помочь мне найти солью для этого. Клиент получает раздражение, что им нужно выбрать неделю после того, который они хотят открыть в календаре = P

+0

Вы проверили дату, когда вы осматриваете DayPilotCalendar.StartDate, чтобы изменить представление? Правильно ли это? – Dan

ответ

0

Thx Dan, в этом была проблема. Я получил помощь от героя в офисе, чтобы помочь мне поставить правильную дату на .StartDate!

Мы изменили от этого:

public static DateTime GetDateFromWeekNumber(int year, int weekNumber) 
    { 
     DateTime date = new DateTime(year, 1, 1); 
     date = date.AddDays(7 * (weekNumber - 1)); 
     date = date.AddDays(-(int)date.DayOfWeek + 1); 

     return date; 
    } 

Для этого:

public static DateTime GetFirstDayOfWeek(DateTime dayInWeek) 
    { 
     CultureInfo cultureInfo = CultureInfo.CurrentCulture; 

     DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek; 
     DateTime firstDayInWeek = dayInWeek.Date; 
     while (firstDayInWeek.DayOfWeek != firstDay) 
      firstDayInWeek = firstDayInWeek.AddDays(-1); 

     return firstDayInWeek; 
    } 

А теперь он работает как шарм! Был не Daypilot, просто старый код = D

 Смежные вопросы

  • Нет связанных вопросов^_^