0

ASP.Net Calendar コントロールがあり、DayRender イベントには次のコードがあります。

protected void calminical1_DayRender(object sender, DayRenderEventArgs e)
{
    CheckBox mycb = new CheckBox();
    e.Cell.Controls.Add(mycb);
}

これにより、Calendar の毎日に CheckBox が含まれるようになります。この背後にある目的とアイデアは、従業員が休暇を希望する日をカレンダーで視覚的に選択するだけで休暇を申請できることです。

問題は、カレンダーをループして、ユーザーがチェックした日を見つける方法がわからないことです。

GridViews の場合、私はよく次を使用します。

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

基本的に同じことを行う必要がありますが、Calendar コントロールの「セル」または「日」に対してです。これらの Web コントロールのほとんどには、明白で直感的なコレクションがあります。つまり、ドロップダウン リストやその他のリスト コントロールには「アイテム」があり、テーブルとグリッドビューには「行」がありますが、カレンダー コントロールに相当するものを見つけることができないようです。

4

3 に答える 3

1

これが、私が探していたものを達成するために最終的に使用したコードです。多分他の誰かがそれが役に立つと思うでしょう:

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;
}
于 2012-05-08T07:21:58.940 に答える