如何在日历允许多个日期选择时单击日期

时间:2015-12-08 14:58:29

标签: c# asp.net date calendar

我有一个日历,用户可以一次选择多个日期,并为数据库中的所有选定日期输入相同的事件。呈现日历时,将突出显示与事件关联的所有日期。我想知道用户点击了哪个具体日期,但由于某些日期已经突出显示,我很难找到用户点击的具体日期。

如果我使用Calendar.SelectedDate,并且由于选择了多个日期,则此属性包含范围中的第一个日期,这不是我想要的。如果我使用Calendar.SelectedDates集合,我会获得所有突出显示的日期,而不是我点击的日期。

我想知道用户点击了哪个特定日期的原因是因为我想显示与该日期相关的事件详细信息(如果有)。这可能吗?

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    foreach (DateTime dt in hs)
    {
        if (!Calendar1.SelectedDates.Contains(dt))
        {
            Calendar1.SelectedDates.Add(dt);                     
        }
        else
        {
            Calendar1.SelectedDates.Remove(dt);
        }
    } 
    hs.Clear();

    DateTime selDate = Calendar1.SelectedDate;

    foreach (DataRow row in table.Rows)
    {
        DateTime calDate = (DateTime)row["caldate"];

        if (calDate == selDate)
        {
            txtDate.Text = row["caldate"].ToString();
            txtDate.ReadOnly = false;
            txtDate.Attributes.Clear();
            txtDate.Visible = true;
            hdnDate.Value = calDate.ToShortDateString();                        
            txtSchedule.Text = row["schedule"].ToString().Trim();
            hdnRID.Value = row["id"].ToString();
            break;
        }
        else
        {
            hdnDate.Value = "";
            txtSchedule.Text = "";
        }
    }
}

如果我从上面的代码中删除以下行,我会看到点击日期。但这些行允许选择多个日期。我只是不明白如何以及为什么,当我包含这些行时,我没有正确点击日期。非常感谢任何帮助。

    foreach (DateTime dt in hs)
    {
        if (!Calendar1.SelectedDates.Contains(dt))
        {
            Calendar1.SelectedDates.Add(dt);                     
        }
        else
        {
            Calendar1.SelectedDates.Remove(dt);
        }
    } 
    hs.Clear();

0 个答案:

没有答案