Календарь внутри modalpopup не обновляется

#asp.net #vb.net #calendar #modalpopupextender

#asp.net #vb.net #Календарь #modalpopupextender

Вопрос:

У меня есть календарь внутри modalpopup.

Мои цели:

  1. выделите выбранные даты
  2. добавьте эти даты в список
  3. Показать эти даты в gridview

Код отлично справляется с задачами 2 и 3. Однако выбранные мной даты не будут выделяться всякий раз, когда я нажимаю на них. НО когда я закрываю всплывающее окно и открываю его снова, ранее выбранные дни теперь подсвечиваются.

Я попытался вставить панель обновления, но она все еще не работает. У вас есть идеи, как это исправить?

Заранее благодарю.

ASPX-код:

  <asp:Panel ID="Panel2" runat="server">
 <asp:UpdatePanel ID="UP_Calendar" runat="server" UpdateMode="Conditional"   ChildrenAsTriggers="False" RenderMode="Inline">
  <ContentTemplate>

   <asp:Calendar ID="Calendar1" runat="server" BackColor="White" 
                    BorderColor="Black" DayNameFormat="Shortest" Font-Names="Times New Roman" 
                    Font-Size="10pt" ForeColor="Black" Height="220px" NextPrevFormat="FullMonth" 
                    TitleFormat="Month" Width="412px" OnDayRender = "Calendar13_DayRender" OnSelectionChanged="Calendar13_SelectionChanged" >

                    <SelectedDayStyle BackColor="#CC3333" ForeColor="White" />
                    <SelectorStyle BackColor="#CCCCCC" Font-Bold="True" Font-Names="Verdana" 
                        Font-Size="8pt" ForeColor="#333333" Width="1%" />                      
                    <TodayDayStyle BackColor="#CCCC99" />
                    <OtherMonthDayStyle ForeColor="#999999" />
                    <DayStyle Width="14%" />
                    <NextPrevStyle Font-Size="8pt" ForeColor="White" />
                    <DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" 
                        ForeColor="#333333" Height="10pt" />
                    <TitleStyle BackColor="Black" Font-Bold="True" Font-Size="13pt" 
                        ForeColor="White" Height="14pt" />
                </asp:Calendar>
                </ContentTemplate>
    </asp:UpdatePanel>
                        </asp:Panel>
  

И это мой код рендеринга дня:

 Protected Sub Calendar1_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs) Handles Calendar1.DayRender

    If e.Day.IsSelected = True Then
        list_Days.Add(e.Day.[Date])
        e.Cell.BackColor = Color.Orange
    End If

    Session("SelectedDates") = list_Days
  

И код события SelectionChanged:

     Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As EventArgs)
    If Session("SelectedDates") IsNot Nothing Then
        Dim newList As List(Of DateTime) = DirectCast(Session("SelectedDates"), List(Of DateTime))
        For Each dt As DateTime In newList
            Calendar1.SelectedDates.Add(dt)
        Next
        list_Days.Clear()
    End If
End Sub
  

Ответ №1:

Это немного глупо, но после некоторых попыток я понял, что ошибка находится в состоянии панели обновления. Я просто установил его в «UpdateMode: «Всегда»», и это сработало.