#asp.net #vb.net #calendar #modalpopupextender
#asp.net #vb.net #Календарь #modalpopupextender
Вопрос:
У меня есть календарь внутри modalpopup.
Мои цели:
- выделите выбранные даты
- добавьте эти даты в список
- Показать эти даты в 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: «Всегда»», и это сработало.