Клиент, заполняющий серверные коллекции во время выполнения

Я добавляю в список объектов DateTime на сервере каждый раз, когда клиент выбирает дату в элементе управления Calender, и, в свою очередь, выделяю все выбранные даты в элементе управления. Я могу выделить (изменить задний цвет) даты, созданные в списке при загрузке страницы, и первую выбранную клиентом дату. Однако дальнейший выбор даты на элементе управления просто меняет, какая дата выделена, т.е. не выделяя больше.

Я думал, что добавление выбранного объекта DateTime в список во время выполнения после выбора, а затем добавление каждого из них в свойство «выбранные даты» календарей позволит обойти проблему элемента управления календарем, очищающего свойство SelectedDates при выборе новой даты . Отладка путем печати всех дат в списке дат в текстовое поле показывает, что даты, с которыми был создан список, и последний выбор находятся только в списке, а не в предыдущих выборах. Мой вопрос и то, что я думаю, является проблемой: можно ли заполнить список на сервере действиями клиента во время выполнения и добавить? Я использую ASP с С# .Net3.5 на VS2008. Спасибо

Мой код System.Collections.Generic.List дат;

    protected void Page_Load(object sender, EventArgs e) {
        this.dates = new List<DateTime>();
        this.dates.Add(new DateTime(2009,12,2));
        this.dates.Add(new DateTime(2009, 12, 3));
        this.dates.Add(new DateTime(2009, 12, 16));
        fillDates();
    }

    protected void AvailCalender_SelectionChanged(object sender, EventArgs e){
        this.dates.Add(this.AvailCalender.SelectedDate);
        foreach (DateTime date in this.dates)
        {
            this.AvailCalender.SelectedDates.Add(date);
            this.displayText.Text = this.displayText.Text + date.ToShortDateString();
        }
        fillDates();
    }


    protected void fillDates()
    {
        foreach (DateTime dates in this.dates)
        {
            this.AvailCalender.SelectedDates.Add(dates);   
        }
        this.AvailCalender.SelectedDayStyle.BackColor = System.Drawing.Color.Blue;
    }

person sMaN    schedule 06.12.2009    source источник


Ответы (1)


List<DateTime> создается с каждой обратной передачей, поэтому предыдущие выборки не сохраняются. Вам нужно сохранить его каким-то образом, например, используя ViewState, Session или сохранив его в БД. Создайте его только в первый раз, используя Page.IsPostBack, чтобы проверить, является ли это первым обращением к странице.

person DaveB    schedule 06.12.2009