Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Диапазон дат в Calendar / 2 сообщений из 2, страница 1 из 1
29.06.2016, 07:46
    #39264382
Cdtnkfyf2016
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон дат в Calendar
Здравствуйте. В программе есть Calendar, в котором нужно выбрать диапазон дат, но не неделя, месяц, а, допустим, со среды по пятницу. Подскажите, пожалуйста, как это сделать.
...
Рейтинг: 0 / 0
06.07.2016, 14:50
    #39268925
Cdtnkfyf2016
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Диапазон дат в Calendar
Здравствуйте. В моей программе есть календарь, в котором есть возможность выбрать несколько дат отдельно. При попытке написать код на выбор диапазона дат, выбирается только начальная дата, дальнейший выбор невозможен.
Кусок с выбором диапазона дат и отдельных дат:
Код: c#
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.
 protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        if (DropDownList17.SelectedValue == "1"){
            //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);

            if (!SelectedDates.Remove(Calendar1.SelectedDate))
                Calendar1.SelectedDates.Clear();
            else
                SelectedDates.Add(Calendar1.SelectedDate);

            ViewState["Dates"] = SelectedDates;
            //foreach (DateTime dt in Calendar1.SelectedDates)
            //{
            //    TextBox1.Text = dt.ToShortDateString();
            //}
        }
        else{
            if (SelectedDates.Count == 0)
            {
                d1 = Calendar1.SelectedDate;
                SelectedDates.Add(Calendar1.SelectedDate);
                
            }
            else
            {
                if (SelectedDates.Count == 1)
                {
                    d2 = Calendar1.SelectedDate;
                    for (DateTime i = d1.AddDays(1); i <= d2; i.AddDays(1))
                    {
                        TextBox15.Text += i;
                        SelectedDates.Add(i);
                        
                    }
                }
                else
                {
                    foreach (DateTime dt in SelectedDates)
                        Calendar1.SelectedDates.Remove(dt);
                    ViewState["Dates"] = null;
                }
            }
            ViewState["Dates"] = SelectedDates;
        }
    }



Полный код календаря:
Код: c#
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.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
//контейнер дат выбранных на календаре
    public List<DateTime> SelectedDates
    {
        get
        {
            if (ViewState["Dates"] == null)
                ViewState["Dates"] = new List<DateTime>();
            return (List<DateTime>)ViewState["Dates"];
        }
        set
        {
            ViewState["Dates"] = value;
        }
    }
    DateTime d1, d2;
    //данное событие вызывается при выборе пользователем определенной даты
    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        if (DropDownList17.SelectedValue == "1"){
            //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);

            if (!SelectedDates.Remove(Calendar1.SelectedDate))
                Calendar1.SelectedDates.Clear();
            else
                SelectedDates.Add(Calendar1.SelectedDate);

            ViewState["Dates"] = SelectedDates;
            //foreach (DateTime dt in Calendar1.SelectedDates)
            //{
            //    TextBox1.Text = dt.ToShortDateString();
            //}
        }
        else{
            if (SelectedDates.Count == 0)
            {
                d1 = Calendar1.SelectedDate;
                SelectedDates.Add(Calendar1.SelectedDate);
                
            }
            else
            {
                if (SelectedDates.Count == 1)
                {
                    d2 = Calendar1.SelectedDate;
                    for (DateTime i = d1.AddDays(1); i <= d2; i.AddDays(1))
                    {
                        TextBox15.Text += i;
                        SelectedDates.Add(i);
                        
                    }
                }
                else
                {
                    foreach (DateTime dt in SelectedDates)
                        Calendar1.SelectedDates.Remove(dt);
                    ViewState["Dates"] = null;
                }
            }
            ViewState["Dates"] = SelectedDates;
        }
    }
    //данное событие происходит при создании каждой ячейки даты элемента управления Calendar
    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
    {
        //запрет выбора дат до сегодняшней включительно
        if (e.Day.Date <= DateTime.Today){
            e.Day.IsSelectable = false;
        }
    }
    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);
        ViewState["Dates"] = SelectedDates;


        foreach (DateTime dt in Calendar1.SelectedDates)
        {
            //TextBox1.Text = dt.ToShortDateString();
        }
    }
    //очистка календаря
    protected void Button2_Click(object sender, EventArgs e)
    {
        //Calendar1.SelectedDates.Clear();
        foreach (DateTime dt in SelectedDates)
            Calendar1.SelectedDates.Remove(dt);
        ViewState["Dates"] = null;
    }




Код: plaintext
1.
2.
3.
<asp:Calendar ID="Calendar1" runat="server" onselectionchanged="Calendar1_SelectionChanged" OnDayRender="Calendar1_DayRender" OnPreRender="Calendar1_PreRender">
                                        <SelectedDayStyle BackColor="#009933" />
                                    </asp:Calendar>




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


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