2014年5月18日 星期日

[ASP.NET]如何在calendar控制項指定年月

ASP.NET中有個calendar控制項

能夠讓使用者點選日期

這部份jQuery UI也有套件可以做到

但calendar控制項最大的缺點是不能直接指定年為單位調整日曆

頂多只能一個月一個月切換

如果要跳到1911年不是按到手抽筋就是你滑鼠壞掉吧…

不過當然還有辦法辦到

在此做個紀錄

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            for (int i = year; i >= year - 100; i--)
            {
                DDLYear.Items.Add(new ListItem(i.ToString()));
            }

            for (int i = 1; i < 13; i++)
            {
                DDLMonth.Items.Add(new ListItem(i.ToString()));
            }
        }
    }

    protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
    {
        Calendar1.TodaysDate = new DateTime(int.Parse(DDLYear.SelectedValue), int.Parse(DDLMonth.SelectedValue), 1);
        //Calendar1.VisibleDate = new DateTime(int.Parse(DDLYear.SelectedValue), int.Parse(DDLMonth.SelectedValue), 1);
       // Calendar1.SelectedDate = new DateTime(int.Parse(DDLYear.SelectedValue), int.Parse(DDLMonth.SelectedValue), 1);
    }
    protected void DropDownList3_SelectedIndexChanged(object sender, EventArgs e)
    {
        Calendar1.TodaysDate = new DateTime(int.Parse(DDLYear.SelectedValue), int.Parse(DDLMonth.SelectedValue), 1);
        //Calendar1.VisibleDate = new DateTime(int.Parse(DDLYear.SelectedValue), int.Parse(DDLMonth.SelectedValue), 1);
        //Calendar1.SelectedDate = new DateTime(int.Parse(DDLYear.SelectedValue), int.Parse(DDLMonth.SelectedValue), 1);
    }
Calendar1.TodaysDate跟Calendar1.VisibleDate最大的差別是 Calendar1.TodaysDate切換到該年月日曆後還是會有個目前選擇的日期 但Calendar1.VisibleDate不會有目前選擇的日期這是最大差別 Calendar1.SelectedDate嘗試是的結果是沒反應,這個有空再研究看看 最後這個範例應該是可以指定日的 只是需要用月份判斷日要產生幾天還有是否為閏年 流程大概是選擇完年後(月是固定的) 日的dropdownlist需要取得目前該月的天數 再由此天數去產生list的內容 不過這部份有遇到再寫吧…
參考文獻
MIS2000時光跳躍
Calendar.TodaysDate
Calendar.VisibleDate