客户端在运行时填充服务器集合

时间:2009-12-06 03:00:32

标签: asp.net web-controls

每次客户端在Calender控件上选择日期时,我都会在服务器上添加DateTime对象列表,然后突出显示控件上的所有选定日期。我能够突出显示(更改背景颜色)页面加载列表中实例化的日期,以及客户端的第一个选定日期。然而,控件上的进一步日期选择只是改变突出显示的日期,即。没有突出更多。

我曾经想过在选择时将所选的DateTime对象添加到运行时的列表中,然后将它们中的每一个添加到日历“选定日期”属性将解决日历控件清除SelectedDates属性时选择的问题一个新的约会。通过将日期列表中的所有日期打印到文本框进行调试,显示列表实例化的日期和最新选择仅在列表中,而不是之前的选择。我的问题和我认为的问题, 服务器上的列表是否可以在运行时由客户端的操作填充,并添加到? 我在VS2008上使用ASP和C#.Net3.5。 感谢

我的代码  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 :(得分:0)

每个回发都会创建List<DateTime>,因此它不会保存以前的选择。您需要以某种方式保留它,例如使用ViewStateSession或将其存储在数据库中。只有在第一次使用Page.IsPostBack创建它时才能检查这是否是第一次点击该页面。