C# 像“什么;foreach(表中的第x行)“;,但对于日历控制日?

C# 像“什么;foreach(表中的第x行)“;,但对于日历控制日?,c#,asp.net,foreach,calendar,web-controls,C#,Asp.net,Foreach,Calendar,Web Controls,我们有一个ASP.Net日历控件,在DayRender事件中,我们有以下代码: protected void calminical1_DayRender(object sender, DayRenderEventArgs e) { CheckBox mycb = new CheckBox(); e.Cell.Controls.Add(mycb); } 这使得日历中的每一天都包含一个复选框。其目的和理念是,员工只需在日历中直观地选择他/她想要休假的天数,即可申请休假时间 问题是,

我们有一个ASP.Net日历控件,在DayRender事件中,我们有以下代码:

protected void calminical1_DayRender(object sender, DayRenderEventArgs e)
{
    CheckBox mycb = new CheckBox();
    e.Cell.Controls.Add(mycb);
}
这使得日历中的每一天都包含一个复选框。其目的和理念是,员工只需在日历中直观地选择他/她想要休假的天数,即可申请休假时间

问题是,我不知道如何在日历中循环查找用户检查的日期

对于GridView,我经常使用:

foreach (Row x in table.Rows)
{
   //loop through all rows
}

本质上,我需要做同样的事情,但对于日历控件的“单元格”或“天”。大多数这些web控件都具有明显且直观的集合,即下拉列表和其他列表控件具有“项”,表格和网格视图具有“行”,但我似乎找不到日历控件的等效项。

也许您应该使用某种数据结构来保存应用程序的状态,而不是日历本身


您可以注册DateSelected事件以捕获所选日期并保存它。之后,您可以循环查看保存的日期。

我会这样做:

在Javascript中,在aspx页面上创建一个数组

var dates=新数组()

然后,您可以在需要使用


“javascript:uuu doPostBack('ca','”&strDayNum&“)”

以下是我最终用来实现所需的代码。也许其他人会发现它很有用:

protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    AddToDates(Calendar1.SelectedDate);
}

private void AddToDates(DateTime newDate)
{
    DateTime selecteddate;
    ArrayList datelist;
    if (ViewState["SelectedDates"] != null)
    {
        datelist = (ArrayList)ViewState["SelectedDates"];
        for (int x = 0; x < datelist.Count; x++)
        {
            selecteddate = (DateTime)datelist[x];
            Calendar1.SelectedDates.Add(selecteddate);
        }
    }
    else
    {
        datelist = new ArrayList();
    }
    if (datelist.Contains(newDate))
    {
        Calendar1.SelectedDates.Remove(newDate);
        datelist.Remove(newDate);
    }
    else
    {
        Calendar1.SelectedDates.Add(newDate);
        datelist.Add(newDate);
    }

    ViewState["SelectedDates"] = datelist;
}
protected void Calendar1\u selection已更改(对象发送方、事件参数e)
{
AddToDate(日历1.选定日期);
}
私有void AddToDates(DateTime newDate)
{
日期时间选择日期;
ArrayList日期表;
如果(ViewState[“SelectedDates”!=null)
{
日期列表=(ArrayList)视图状态[“SelectedDates”];
对于(int x=0;x
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    AddToDates(Calendar1.SelectedDate);
}

private void AddToDates(DateTime newDate)
{
    DateTime selecteddate;
    ArrayList datelist;
    if (ViewState["SelectedDates"] != null)
    {
        datelist = (ArrayList)ViewState["SelectedDates"];
        for (int x = 0; x < datelist.Count; x++)
        {
            selecteddate = (DateTime)datelist[x];
            Calendar1.SelectedDates.Add(selecteddate);
        }
    }
    else
    {
        datelist = new ArrayList();
    }
    if (datelist.Contains(newDate))
    {
        Calendar1.SelectedDates.Remove(newDate);
        datelist.Remove(newDate);
    }
    else
    {
        Calendar1.SelectedDates.Add(newDate);
        datelist.Add(newDate);
    }

    ViewState["SelectedDates"] = datelist;
}