0

每次客户端在日历控件上选择日期时,我都会添加到服务器上的 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;
    }
4

1 回答 1

0

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

于 2009-12-06T12:21:22.300 回答