Здравствуйте. В моей программе есть календарь, на котором можно выделять несколько дат. В случае, когда нужно отменить выбор всех дат, выбор последней даты не отменяется.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<asp:Calendar ID="Calendar1" runat="server" BackColor="White" BorderColor="#999999" Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" OnPreRender="Calendar1_PreRender" OnSelectionChanged="Calendar1_SelectionChanged" CellPadding="4" DayNameFormat="Shortest" Height="180px" Width="200px" OnDayRender="onDayRender" >
<DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" />
<NextPrevStyle VerticalAlign="Bottom" />
<OtherMonthDayStyle ForeColor="#808080" />
<SelectedDayStyle BackColor="#666666" Font-Bold="True" ForeColor="White" />
<SelectorStyle BackColor="#CCCCCC" />
<TitleStyle BackColor="#999999" BorderColor="Black" Font-Bold="True" />
<TodayDayStyle BackColor="#CCCCCC" ForeColor="Black" />
<WeekendDayStyle BackColor="#FFFFCC" />
</asp:Calendar>
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
public List<DateTime> SelectedDates
{
get
{
if (ViewState["Dates"] == null)
ViewState["Dates"] = new List<DateTime>();
return (List<DateTime>)ViewState["Dates"];
}
set
{
ViewState["Dates"] = value;
}
}
protected void Calendar1_PreRender(object sender, EventArgs e)
{
// Reset Selected Dates
Calendar1.SelectedDates.Clear();
// Select previously Selected Dates
foreach (DateTime dt in SelectedDates)
Calendar1.SelectedDates.Add(dt);
foreach (DateTime dt in Calendar1.SelectedDates)
{
TextBox1.Text = dt.ToLongDateString();
}
}
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
//Check if selected Date is in the saved list
// Remove the Selected Date from the saved list
if (SelectedDates.Contains(Calendar1.SelectedDate))
SelectedDates.Remove(Calendar1.SelectedDate);
else
SelectedDates.Add(Calendar1.SelectedDate);
ViewState["Dates"] = SelectedDates;
}
protected void onDayRender(object sender, DayRenderEventArgs e)
{
if (e.Day.IsSelected == true)
{
SelectedDates.Add(e.Day.Date);
}
Session["SelectedDates"] = SelectedDates;
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox56.Text = "";
for (int i = 0; i < SelectedDates.Count; ++i)
{
TextBox56.Text += SelectedDates[i];
}
}
protected void Calendar1_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
{
if (e.Day.Date <= DateTime.Today)
{
e.Day.IsSelectable = false;
}
}
Подскажите, пожалуйста, каким образом можно отменить выбор последней даты.