1. 程式人生 > >C# calendar 日曆程式碼全解析

C# calendar 日曆程式碼全解析

程式碼如下:

using System;
………………

public partial class Default: System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack )                                      //如果第一次載入頁面使日曆,label不可見
        {
            Calendar1.Visible = false;
            Label1.Visible = false;
            for (int y=1949;y<2050 ;y++ )             //給日期1下拉框新增年


            {
                DropDownList1.Items.Add(y.ToString());
            }
            for (int m = 1; m < 13;m++ )               //給日期2下拉框新增月
            {
                DropDownList2.Items.Add(m.ToString());
            }
            DropDownList1.Text = (DateTime.Now.Year).ToString();        //給下拉框預設顯示當前日期

            DropDownList2.Text = (DateTime.Now.Month).ToString();
        }
    }

//當下拉框變化時讓日曆顯示行對應的日期
    protected void DropDownList_SelectedIndexChanged(object sender, EventArgs e)
    {
        string y = DropDownList1.SelectedValue;
        string m = DropDownList2.SelectedValue;
        Calendar1.VisibleDate

= Convert.ToDateTime(y+"-"+m+"-"+(Calendar1.SelectedDate.Day).ToString());
        Calendar1.SelectedDate = Convert.ToDateTime(y + "-" + m + "-" + (Calendar1.SelectedDate.Day).ToString());
    }

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        Calendar1.Visible = true;         //當點選linkbutton的時候才彈出日曆
    }
    protected void Calendar1_SelectionChanged(object sender, EventArgs e)
    {
        DropDownList2.Text = Calendar1.SelectedDate.Month.ToString(); //當日期通過day從一個月變化到另一個月時dropdownlist的月也跟著變化
    }
    protected void MonthChanged(object sender, MonthChangedEventArgs e)
    {
        DropDownList1.Text = e.NewDate.Year.ToString();//當點選日曆上的上下月時dropdownlist的年和月也跟著變化
        DropDownList2.Text = e.NewDate.Month.ToString();
      
       
    }
    protected void Button1_Click(object sender, EventArgs e)//觸發單擊事件,讓label顯示,把選擇的日期顯示出來
    {
        Label1.Visible = true;
        Label1.Text = (Calendar1.SelectedDate.Year).ToString() +"-"+ (Calendar1.SelectedDate.Month).ToString() +"-"+ (Calendar1.SelectedDate.Day).ToString();
    }
}

設計頁面程式碼如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>無標題頁</title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="text-align: left">
        <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">選擇你的日期</asp:LinkButton>&nbsp;
        <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList_SelectedIndexChanged">
        </asp:DropDownList>
        年
        <asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList_SelectedIndexChanged">
        </asp:DropDownList>
        月
        <asp:Calendar ID="Calendar1" runat="server" BackColor="#FFFFCC" BorderColor="#FFCC66" Font-Names="Verdana" Font-Size="8pt" ForeColor="#663399"
            Height="200px" Width="220px" BorderWidth="1px" DayNameFormat="Shortest" ShowGridLines="True" OnVisibleMonthChanged="MonthChanged" OnSelectionChanged="Calendar1_SelectionChanged" Visible="False">
            <SelectedDayStyle BackColor="#CCCCFF" Font-Bold="True" />
            <TodayDayStyle BackColor="#FFCC66" ForeColor="White" />
            <OtherMonthDayStyle ForeColor="#CC9966" />
            <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC" />
            <DayHeaderStyle Font-Bold="True" Height="1px" BackColor="#FFCC66" />
            <TitleStyle BackColor="#990000" Font-Bold="True" Font-Size="9pt"
                ForeColor="#FFFFCC" />
            <SelectorStyle BackColor="#FFCC66" />
        </asp:Calendar>
        &nbsp;
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="確定" /><br />
        &nbsp;<asp:Label ID="Label1" runat="server" ForeColor="Fuchsia"></asp:Label>&nbsp;<br />
   
    </div>
    </form>
</body>
</html>