Клиент заполняет серверные коллекции во время выполнения - PullRequest
0 голосов
/ 06 декабря 2009

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

Я думал, что добавление выбранного объекта DateTime в список во время выполнения после выбора, а затем добавление каждого из них в свойство «Выбранные даты» календаря позволит обойти проблему очистки элемента управления календаря при выборе свойства SelectedDates при выборе новая дата. Отладка путем печати всех дат в списке дат в текстовом поле показывает, что даты, для которых был создан экземпляр списка, и последний выбор находятся только в списке, а не в предыдущих. Мой вопрос и что я думаю, это проблема, Может ли список на сервере заполняться действиями клиента во время выполнения и добавляться в? Я использую ASP с C # .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;
    }

1 Ответ

0 голосов
/ 06 декабря 2009

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

...