多機能カレンダー - 休日と休業日 -

カレンダーおよび日付コントロールのドロップダウンカレンダーでは、祝日を設定できるほか、休業日(毎週の定期的な休み)も設定できます。 休業日に設定する曜日と週を選択し、指定した休業日の文字や背景のスタイルを設定します。ここでは、カレンダーにはあらかじめ国民の祝日が設定されています。

カレンダー:
日付:
休業日の設定 スタイル





文字色  
背景色  
背景画像 


ソースコード

別ウィンドウで表示
using System;
using System.Drawing;
using GrapeCity.Web.Input.IMCalendar;

public partial class Calendar_Holiday : System.Web.UI.Page
{
    protected HolidayStyle nationalHoliday = new HolidayStyle();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // 初期値を設定します。
            GcCalendar1.SelectedDate = GrapeCity.Web.Input.Core.DateTimeEx.Now;

            // 2015年2月現在の国民の祝日を設定します。 
            // 固定の祝日を設定します。 
            nationalHoliday.Name = "国民の祝日";
            nationalHoliday.SubStyle = new SubStyle(Color.WhiteSmoke, Color.Red);
            nationalHoliday.Holidays.Add(new Holiday("元旦", 1, 1));
            nationalHoliday.Holidays.Add(new Holiday("建国記念の日", 2, 11));
            nationalHoliday.Holidays.Add(new Holiday("昭和の日", 4, 29));
            nationalHoliday.Holidays.Add(new Holiday("憲法記念日", 5, 3));
            nationalHoliday.Holidays.Add(new Holiday("みどりの日", 5, 4));
            nationalHoliday.Holidays.Add(new Holiday("こどもの日", 5, 5));
            nationalHoliday.Holidays.Add(new Holiday("文化の日", 11, 3));
            nationalHoliday.Holidays.Add(new Holiday("勤労感謝の日", 11, 23));
            nationalHoliday.Holidays.Add(new Holiday("天皇誕生日", 12, 23));

            // ハッピーマンデーを設定します。 
            nationalHoliday.Holidays.Add(new DayOfWeekHoliday("成人の日", MonthFlags.January, DayOfWeekInMonthFlags.Second, DayOfWeekFlags.Monday));
            nationalHoliday.Holidays.Add(new DayOfWeekHoliday("海の日", MonthFlags.July, DayOfWeekInMonthFlags.Third, DayOfWeekFlags.Monday));
            nationalHoliday.Holidays.Add(new DayOfWeekHoliday("敬老の日", MonthFlags.September, DayOfWeekInMonthFlags.Third, DayOfWeekFlags.Monday));
            nationalHoliday.Holidays.Add(new DayOfWeekHoliday("体育の日", MonthFlags.October, DayOfWeekInMonthFlags.Second, DayOfWeekFlags.Monday));

            // 年によって変化する祝日を2005年~2025年の分を設定します。 
            for (int i = 2005; i < 2025; i++)
            {
                SetYearHoliday(i);
            }

            // 振替休日の扱いを設定します。 
            nationalHoliday.Holidays.Weekdays.Sunday = new DayOfWeekHolidayPolicy(WeekFlags.All, HolidayOverride.NextWorkday);
            GcCalendar1.OverrideTipText = "振替休日";
            GcDate1.DropDownCalendar.OverrideTipText = "振替休日";

            // 休日スタイルをコレクションに追加してカレンダー、ドロップダウンカレンダーに反映させます。 
            GcCalendar1.HolidayStyles.Add("国民の祝日", nationalHoliday);
            GcCalendar1.ActiveHolidayStyles = new string[] { "国民の祝日"};
            GcDate1.DropDownCalendar.HolidayStyles.Add("国民の祝日", nationalHoliday);
            GcDate1.DropDownCalendar.ActiveHolidayStyles = new string[] {"国民の祝日"};
        }
    }

    private void SetYearHoliday(int Year)
    {
        // 年によって変化する国民の祝日を設定します。 
        int currentYear = Year;

        // 1900年から2099年までを対象としています。 
        // この範囲を超えた年については、便宜的に2015年の設定をそのまま使用します。 
        if (currentYear > 1899 && currentYear < 2100)
        {
            switch (currentYear % 4)
            {
                case 0:
                    // 春分の日を設定します。 
                    if (currentYear < 1960)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")));
                    }
                    else if (currentYear >= 1960 && currentYear < 2092)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/19")));
                    }
                    // 秋分の日を設定します。 
                    if (currentYear < 2012)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/22")));
                    }
                    break;
                case 1:
                    // 春分の日を設定します。 
                    if (currentYear < 1993)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")));
                    }
                    // 秋分の日を設定します。 
                    if (currentYear < 1921)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/24")));
                    }
                    else if (currentYear >= 1921 && currentYear < 2045)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/22")));
                    }
                    break;
                case 2:
                    // 春分の日を設定します。 
                    if (currentYear < 2026)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")));
                    }
                    // 秋分の日を設定します。 
                    if (currentYear < 1950)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/24")));
                    }
                    else if (currentYear >= 1950 && currentYear < 2078)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/22")));
                    }
                    break;
                case 3:
                    // 春分の日を設定します。 
                    if (currentYear < 1927)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/22")));
                    }
                    else if (currentYear >= 1927 && currentYear < 2059)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")));
                    }
                    // 秋分の日を設定します。 
                    if (currentYear < 1983)
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/24")));
                    }
                    else
                    {
                        nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")));
                    }
                    break;
            }
        }
        else
        {
            // 2015年の春分の日を設定します。 
            nationalHoliday.Holidays.Add(new ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")));
            // 2015年の秋分の日を設定します。 
            nationalHoliday.Holidays.Add(new ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")));
        }

        // 2つの祝日に挟まれた営業日を休日に設定します。 
        if (currentYear > 2003)
        {
            DateTime Syubun = ((ForceHoliday)nationalHoliday.Holidays[nationalHoliday.Holidays.Count - 1]).Start;
            if (Syubun.DayOfWeek == System.DayOfWeek.Wednesday)
            {
                nationalHoliday.Holidays.Add(new ForceHoliday("休日", Syubun.AddDays(-1)));
            }
        }
        // 2016年以降、山の日を設定します。
        if (currentYear > 2015)
        {
            nationalHoliday.Holidays.Add(new ForceHoliday("山の日", DateTime.Parse(currentYear.ToString() + "/8/11")));
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        HolidayStyle myHoliday = new HolidayStyle();

        // コンテキストメニューの表示、非表示を設定します。
        GcCalendar1.ShowContextMenu = CheckBox3.Checked;
        GcDate1.DropDownCalendar.ShowContextMenu = CheckBox3.Checked;

        // DayOfWeekFlags用の定数を作成します。
        int dayOfWeek = 0;
        int flagCount = 1;
        for (int i = 0; i < ListBox1.Items.Count; i++)
        {
            if (ListBox1.Items[i].Selected)
            {
                dayOfWeek += flagCount;
            }
            flagCount = flagCount * 2;
        }

        // Weekflags用の定数を作成します。
        int weekSetting = 0;
        flagCount = 1;
        for (int i = 0; i < CheckBoxList1.Items.Count; i++)
        {
            if (CheckBoxList1.Items[i].Selected)
            {
                weekSetting += flagCount;
            }
            flagCount = flagCount * 2;
        }

        Color forecolor = GcColorPicker1.SelectedIndex < 0 ? SystemColors.WindowText : GcColorPicker1.SelectedColor;
        Color backcolor = GcColorPicker2.SelectedIndex < 0 ? Color.White : GcColorPicker2.SelectedColor;
        string imageURL = GcComboBox1.SelectedIndex < 0 ? "" : GcComboBox1.ImageList[GcComboBox1.SelectedIndex].URL;

        // 休業日と休業日のスタイルを各コントロールに設定します。
        myHoliday.Holidays.Add(new DayOfWeekHoliday(MonthFlags.All, (DayOfWeekInMonthFlags)weekSetting, (DayOfWeekFlags)dayOfWeek));
        myHoliday.SubStyle = new SubStyle(backcolor, forecolor, CheckBox1.Checked, CheckBox2.Checked, true, imageURL);

        // 休業日をカレンダーに追加します。
        string holidayName = "休業日" + GcCalendar1.HolidayStyles.Count.ToString();
        GcCalendar1.HolidayStyles.Add(holidayName, myHoliday);
        GcDate1.DropDownCalendar.HolidayStyles.Add(holidayName, myHoliday);

        // 追加した休業日をアクティブにします。
        System.Collections.ArrayList styles = new System.Collections.ArrayList();
        for (int i = 0; i < GcCalendar1.HolidayStyles.Count; i++)
        {
            styles.Add(GcCalendar1.HolidayStyles.GetKey(i));
        }

        GcCalendar1.ActiveHolidayStyles = (string[])styles.ToArray(typeof(string));
        GcDate1.DropDownCalendar.ActiveHolidayStyles = (string[])styles.ToArray(typeof(string));
    }
}
Imports GrapeCity.Web.Input.IMCalendar
Imports System.Drawing

Partial Class Calendar_Holiday
    Inherits System.Web.UI.Page

    Protected nationalHoliday As HolidayStyle = New HolidayStyle()

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            ' 初期値を設定します。
            GcCalendar1.SelectedDate = GrapeCity.Web.Input.Core.DateTimeEx.Now

            ' 2015年2月現在の国民の祝日を設定します。 
            ' 固定の祝日を設定します。 
            nationalHoliday.Name = "国民の祝日"
            nationalHoliday.SubStyle = New SubStyle(Color.WhiteSmoke, Color.Red)
            nationalHoliday.Holidays.Add(New Holiday("元日", 1, 1))
            nationalHoliday.Holidays.Add(New Holiday("建国記念の日", 2, 11))
            nationalHoliday.Holidays.Add(New Holiday("昭和の日", 4, 29))
            nationalHoliday.Holidays.Add(New Holiday("憲法記念日", 5, 3))
            nationalHoliday.Holidays.Add(New Holiday("みどりの日", 5, 4))
            nationalHoliday.Holidays.Add(New Holiday("こどもの日", 5, 5))
            nationalHoliday.Holidays.Add(New Holiday("文化の日", 11, 3))
            nationalHoliday.Holidays.Add(New Holiday("勤労感謝の日", 11, 23))
            nationalHoliday.Holidays.Add(New Holiday("天皇誕生日", 12, 23))

            ' ハッピーマンデーを設定します。 
            nationalHoliday.Holidays.Add(New DayOfWeekHoliday("成人の日", MonthFlags.January, DayOfWeekInMonthFlags.Second, DayOfWeekFlags.Monday))
            nationalHoliday.Holidays.Add(New DayOfWeekHoliday("海の日", MonthFlags.July, DayOfWeekInMonthFlags.Third, DayOfWeekFlags.Monday))
            nationalHoliday.Holidays.Add(New DayOfWeekHoliday("敬老の日", MonthFlags.September, DayOfWeekInMonthFlags.Third, DayOfWeekFlags.Monday))
            nationalHoliday.Holidays.Add(New DayOfWeekHoliday("体育の日", MonthFlags.October, DayOfWeekInMonthFlags.Second, DayOfWeekFlags.Monday))

            ' 年によって変化する祝日を2005年~2025年の分を設定します。 
            For I As Integer = 2005 To 2025
                ' 春分の日、秋分の日を設定します。 
                SetYearHoliday(I)
            Next I

            ' 振替休日の扱いを設定します。 
            nationalHoliday.Holidays.Weekdays.Sunday = New DayOfWeekHolidayPolicy(WeekFlags.All, HolidayOverride.NextWorkday)
            GcCalendar1.OverrideTipText = "振替休日"
            GcDate1.DropDownCalendar.OverrideTipText = "振替休日"

            ' 休日スタイルをコレクションに追加してカレンダー、ドロップダウンカレンダーに反映させます。 
            GcCalendar1.HolidayStyles.Add("国民の祝日", nationalHoliday)
            GcCalendar1.ActiveHolidayStyles = New String() {"国民の祝日"}
            GcDate1.DropDownCalendar.HolidayStyles.Add("国民の祝日", nationalHoliday)
            GcDate1.DropDownCalendar.ActiveHolidayStyles = New String() {"国民の祝日"}
        End If
    End Sub

    Private Sub SetYearHoliday(ByVal Year As Integer)
        ' 年によって変化する国民の祝日を設定します。 
        Dim currentYear As Integer = Year

        ' 1900年から2099年までを対象としています。 
        ' この範囲を超えた年については、便宜的に2015年の設定をそのまま使用します。 
        If currentYear > 1899 AndAlso currentYear < 2100 Then
            Select Case currentYear Mod 4
                Case 0
                    ' 春分の日を設定します。 
                    If currentYear < 1960 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")))
                    ElseIf currentYear >= 1960 AndAlso currentYear < 2092 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/19")))
                    End If
                    ' 秋分の日を設定します。 
                    If currentYear < 2012 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/22")))
                    End If
                Case 1
                    ' 春分の日を設定します。 
                    If currentYear < 1993 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")))
                    End If
                    ' 秋分の日を設定します。 
                    If currentYear < 1921 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/24")))
                    ElseIf currentYear >= 1921 AndAlso currentYear < 2045 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/22")))
                    End If
                Case 2
                    ' 春分の日を設定します。 
                    If currentYear < 2026 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")))
                    End If
                    ' 秋分の日を設定します。 
                    If currentYear < 1950 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/24")))
                    ElseIf currentYear >= 1950 AndAlso currentYear < 2078 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/22")))
                    End If
                Case 3
                    ' 春分の日を設定します。 
                    If currentYear < 1927 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/22")))
                    ElseIf currentYear >= 1927 AndAlso currentYear < 2059 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/20")))
                    End If
                    ' 秋分の日を設定します。 
                    If currentYear < 1983 Then
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/24")))
                    Else
                        nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")))
                    End If
            End Select
        Else
            ' 2015年の春分の日を設定します。 
            nationalHoliday.Holidays.Add(New ForceHoliday("春分の日", DateTime.Parse(currentYear.ToString() + "/3/21")))
            ' 2015年の秋分の日を設定します。 
            nationalHoliday.Holidays.Add(New ForceHoliday("秋分の日", DateTime.Parse(currentYear.ToString() + "/9/23")))
        End If
        ' 2つの祝日に挟まれた営業日を休日に設定します。 
        If currentYear > 2003 Then
            Dim Syubun As DateTime = CType(nationalHoliday.Holidays(nationalHoliday.Holidays.Count - 1), ForceHoliday).Start

            If Syubun.DayOfWeek = System.DayOfWeek.Wednesday Then
                nationalHoliday.Holidays.Add(New ForceHoliday("休日", Syubun.AddDays(-1)))
            End If

        End If
        ' 2016年以降、山の日を設定します。
        If currentYear > 2015 Then
            nationalHoliday.Holidays.Add(New ForceHoliday("山の日", DateTime.Parse(currentYear.ToString() + "/8/11")))
        End If
    End Sub

    ' 休業日を追加します。
    Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
        Dim myHoliday As New HolidayStyle()

        ' コンテキストメニューの表示、非表示を設定します。
        GcCalendar1.ShowContextMenu = CheckBox3.Checked
        GcDate1.DropDownCalendar.ShowContextMenu = CheckBox3.Checked

        ' DayOfWeekFlags用の定数を作成します。
        Dim dayOfWeek As Integer = 0
        Dim flagCount As Integer = 1
        For i As Integer = 0 To ListBox1.Items.Count - 1
            If ListBox1.Items(i).Selected Then
                dayOfWeek += flagCount
            End If
            flagCount = flagCount * 2
        Next

        ' Weekflags用の定数を作成します。
        Dim weekSetting As Integer = 0
        flagCount = 1
        For i As Integer = 0 To CheckBoxList1.Items.Count - 1
            If CheckBoxList1.Items(i).Selected Then
                weekSetting += flagCount
            End If

            flagCount = flagCount * 2
        Next

        ' 背景色、文字色、背景画像を取得します。 
        Dim forecolor As Color = SystemColors.WindowText
        Dim backcolor As Color = Color.Empty
        Dim imageURL As String = ""

        If GcColorPicker1.SelectedIndex > -1 Then
            forecolor = GcColorPicker1.SelectedColor
        End If

        If GcColorPicker2.SelectedIndex > -1 Then
            backcolor = GcColorPicker2.SelectedColor
        End If

        If GcComboBox1.SelectedIndex > -1 Then
            imageURL = GcComboBox1.ImageList(GcComboBox1.SelectedIndex).URL

        End If

        ' 休業日と休業日のスタイルを各コントロールに設定します。
        myHoliday.Holidays.Add(New DayOfWeekHoliday(MonthFlags.All, weekSetting, dayOfWeek))
        myHoliday.SubStyle = New SubStyle(backcolor, forecolor, CheckBox1.Checked, CheckBox2.Checked, True, imageURL)

        ' 休業日をカレンダーに追加します。
        Dim holidayName As String = "休業日" + GcCalendar1.HolidayStyles.Count.ToString()
        GcCalendar1.HolidayStyles.Add(holidayName, myHoliday)
        GcDate1.DropDownCalendar.HolidayStyles.Add(holidayName, myHoliday)

        ' 追加した休業日をアクティブにします。
        Dim styles As New System.Collections.ArrayList

        For i As Integer = 0 To GcCalendar1.HolidayStyles.Count - 1
            styles.Add(GcCalendar1.HolidayStyles.GetKey(i))
        Next

        GcCalendar1.ActiveHolidayStyles = styles.ToArray(GetType(String))
        GcDate1.DropDownCalendar.ActiveHolidayStyles = styles.ToArray(GetType(String))

    End Sub
End Class

<%@ page title="" language="C#" masterpagefile="~/MasterPage.master" autoeventwireup="true" inherits="Calendar_Holiday, App_Web_5cdiiolp" stylesheettheme="SkinFile" %>

<%@ Register assembly="GrapeCity.Web.Input.v80, Version=8.0.2016.1130, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMCalendar" tagprefix="im_calendar" %>
<%@ Register assembly="GrapeCity.Web.Input.v80, Version=8.0.2016.1130, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMDate" tagprefix="im_date" %>
<%@ Register assembly="GrapeCity.Web.Input.v80, Version=8.0.2016.1130, Culture=neutral, PublicKeyToken=c3bd7c1dccef5128" namespace="GrapeCity.Web.Input.IMCombo" tagprefix="im_combo" %>
<%@ Register assembly="GrapeCity.Web.Input.ColorPicker.v80" namespace="GrapeCity.Web.Input.IMColorPicker" tagprefix="im_ColorPicker" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    <script type="text/javascript">
        function AddHoliday() {
            var calendar = FindIMControl("<%= GcCalendar1.ClientID %>");
            var dropdownCalendar = FindIMControl("<%= GcDate1.ClientID %>").GetDropDownCalendar();

            // コンテキストメニューの表示、非表示を設定します。
            calendar.SetShowContextMenu(document.getElementById("<%= CheckBox3.ClientID %>").checked);
            dropdownCalendar.SetShowContextMenu(document.getElementById("<%= CheckBox3.ClientID %>").checked);

            // 休業日を設定します。
            var holiday = new GCIM.DayOfWeekHoliday();

            // 曜日を設定します。
            var sel = document.getElementById('<%= ListBox1.ClientID%>');
            if (sel.options.length < 1) return;
            var dayofWeek = "";
            for (var i = 0; i < sel.options.length; i++) {
                if (sel.options[i].selected) {
                    if (dayofWeek != "") dayofWeek += ",";
                    dayofWeek += sel.options[i].value;
                }
            }
            holiday.SetDayOfWeek(dayofWeek);

            // 週を設定します。
            var options = document.getElementById('<%= CheckBoxList1.ClientID%>').getElementsByTagName('input');
            if (options.length < 1) return;
            var weekInMonth = "";
            for (var i = 0; i < options.length; i++) {
                if (options[i].checked) {
                    if (weekInMonth != "") weekInMonth += ",";
                    weekInMonth += options[i].value;
                }
            }
            holiday.SetDayOfWeekInMonth(weekInMonth);
            holiday.SetMonth("all");

            // スタイルを設定します。
            var holidayStyle = new GCIM.HolidayStyle('休業日' + calendar.GetHolidayStylesCount());

            // 文字装飾を設定します。
            holidayStyle.SetBold(document.getElementById("<%= CheckBox1.ClientID %>").checked);
            holidayStyle.SetUnderLine(document.getElementById("<%= CheckBox2.ClientID %>").checked);

            // 文字色を設定します。
            if (FindIMControl("<%= GcColorPicker1.ClientID %>").GetSelectedIndex() > -1) {
                holidayStyle.SetForeColor(FindIMControl("<%= GcColorPicker1.ClientID %>").GetText());
            }
            else {
                holidayStyle.SetForeColor("black");
            }
            // 背景色を設定します。
            if (FindIMControl("<%= GcColorPicker2.ClientID %>").GetSelectedIndex() > -1) {
                holidayStyle.SetBackColor(FindIMControl("<%= GcColorPicker2.ClientID %>").GetText());
            }
            else {
                holidayStyle.SetBackColor("white");
            }
            // 背景画像を設定します。
            if (FindIMControl("<%= GcComboBox1.ClientID %>").GetSelectedIndex() > -1) {
                var imageUrl = FindIMControl("<%= GcComboBox1.ClientID %>").GetSelectedItem().GetImageUrl();
                holidayStyle.SetImageUrl(imageUrl);

            }

            holidayStyle.SetIsActive(true);
            holidayStyle.AddHoliday(holiday);
            calendar.AddHolidayStyle(holidayStyle);
            dropdownCalendar.AddHolidayStyle(holidayStyle);
        }
    </script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div class="sample">
        <table>
            <tr>
                <td class="controlsTd" valign="top">カレンダー:</td>
                <td class="controlsTd">
                    <im_calendar:GcCalendar ID="GcCalendar1" runat="server" BackColor="#FDE4D0" 
                        BorderColor="#F06454" BorderStyle="Solid" BorderWidth="1px" 
                        HasLoadFromXml="True" HCellSpacing="1" VCellSpacing="1" HeaderFormat="ggg e年 M月" 
                        Height="210px" Width="210px">
                        <ItemStyle BorderColor="#F06454" BorderStyle="Solid" BorderWidth="1px" ForeColor="#B22222" BackColor="White" />
                        <HeaderStyle BackColor="#FDE4D0" BorderColor="#A0A0A0" ForeColor="#8B0000" />
                        <TitleStyle BackColor="#FDE4D0" ForeColor="#F06454" />
                        <weekflags index="0" value="All"></weekflags>
                        <weekflags index="6" value="All"></weekflags>
                        <helpvalues selecteddate = "2013/01/21 00:00:00" culturename = 'ja-JP' 
                            height="210px" width="210px" ></helpvalues>
                    </im_calendar:GcCalendar>
                </td>
                <td class="controlsTd" valign="top">日付:</td>
                <td class="controlsTd" valign="top">
                    <im_date:GcDate ID="GcDate1" runat="server" HasLoadFromXml="True">
                        <dropdowncalendar autosize="False" backcolor="#F0FFF0" hcellspacing="2" 
                            headerformat="ggg e年 M月" height="210px" vcellspacing="2" width="210px">
                            <ItemStyle BorderColor="#32CD32" BorderStyle="Solid" BorderWidth="1px" />
                            <HeaderStyle BackColor="#F0FFF0" BorderColor="#646464" ForeColor="#556B2F" />
                            <TitleStyle BackColor="#F0FFF0" ForeColor="#556B2F" />
                        </dropdowncalendar>
                        <weekflags index="0" value="All"></weekflags>
                        <weekflags index="6" value="All"></weekflags>
                    </im_date:GcDate>
                </td>
            </tr>
        </table>
    </div>
    <table class="inputTable">
        <tr>
            <th class="inputTh">休業日の設定</th>
            <th class="inputTh">スタイル</th>
        </tr>
        <tr>
            <td class="inputTd" rowspan="4">
            <table>
                <tr>
                    <td>
                    <asp:ListBox ID="ListBox1" runat="server" Font-Names="メイリオ" Height="150px" Width="75px" SelectionMode="Multiple">
                        <asp:ListItem Value="sunday">日曜日</asp:ListItem>
                        <asp:ListItem Value="monday">月曜日</asp:ListItem>
                        <asp:ListItem Value="tuesday">火曜日</asp:ListItem>
                        <asp:ListItem Value="wednesday">水曜日</asp:ListItem>
                        <asp:ListItem Value="thursday">木曜日</asp:ListItem>
                        <asp:ListItem Value="friday">金曜日</asp:ListItem>
                        <asp:ListItem Value="saturday">土曜日</asp:ListItem>
                    </asp:ListBox>
                    </td>
                    <td>
                    <asp:CheckBoxList ID="CheckBoxList1" runat="server" style="margin-left:10px; font-size:120%;">
                        <asp:ListItem Value="first">最初の週</asp:ListItem>
                        <asp:ListItem Value="second">第2週</asp:ListItem>
                        <asp:ListItem Value="third">第3週</asp:ListItem>
                        <asp:ListItem Value="fourth">第4週</asp:ListItem>
                        <asp:ListItem Value="fifth">第5週</asp:ListItem>
                        <asp:ListItem Value="last">最後の週</asp:ListItem>
                    </asp:CheckBoxList>
                    </td>
                </tr>
            </table>
            </td>
            <td class="inputTd">
                <asp:CheckBox ID="CheckBox1" runat="server" Text="太字" />
                <asp:CheckBox ID="CheckBox2" runat="server" Text="下線" />
            </td>
        </tr>
        <tr>
            <td class="inputTd">文字色 &nbsp;
                <im_ColorPicker:GcColorPicker ID="GcColorPicker1" runat="server"></im_ColorPicker:GcColorPicker>
            </td>
        </tr>
        <tr>
            <td class="inputTd">背景色 &nbsp;
                <im_ColorPicker:GcColorPicker ID="GcColorPicker2" runat="server"></im_ColorPicker:GcColorPicker>
            </td>
        </tr>
        <tr>
            <td class="inputTd">背景画像&nbsp;
                <im_combo:GcComboBox ID="GcComboBox1" runat="server" HasLoadFromXml="True" 
                    Width="50" Height="25px" ImageWidth="24" TextBoxStyle="ImageOnly">
                    <ListBox ItemHeight="25" ShowItemImage="True" />
                    <imageitem height="23" name="holiday1" url="~/images/imImages/holiday1.png" width="24"></imageitem>
                    <imageitem height="23" name="holiday2" url="~/images/imImages/holiday2.png" width="24"></imageitem>
                    <imageitem height="23" name="holiday3" url="~/images/imImages/holiday3.png" width="24"></imageitem>
                    <imageitem height="23" name="holiday4" url="~/images/imImages/holiday4.png" width="24"></imageitem>
                    <imageitem height="23" name="holiday5" url="~/images/imImages/holiday5.png" width="24"></imageitem>
                    <imageitem height="23" name="holiday6" url="~/images/imImages/holiday6.png" width="24"></imageitem>
                    <imageitem height="23" name="holiday7" url="~/images/imImages/holiday7.png" width="24"></imageitem>
                    <listcolumn autowidth="False" datadisplaytype="Text" header-text="Column0" width="46"></listcolumn>
                    <comboitem image="0"></comboitem>
                    <comboitem image="1"></comboitem>
                    <comboitem image="2"></comboitem>
                    <comboitem image="3"></comboitem>
                    <comboitem image="4"></comboitem>
                    <comboitem image="5"></comboitem>
                    <comboitem image="6"></comboitem>
                    <helpvalue ></helpvalue>
                </im_combo:GcComboBox>
            </td>
        </tr>
        <tr>
            <td colspan="2" class="inputTd">
                <asp:CheckBox ID="CheckBox3" runat="server" Text="コンテキストメニューに休日コレクションを表示する" Checked="True" />
            </td>
        </tr>
    </table>
    <center>
        <input id="Button2" type="button" value="休業日の追加(クライアント側)" onclick="AddHoliday()" class="button_nowidth"/><br />
        <asp:Button ID="Button1" runat="server" CssClass="button_nowidth" Text="休業日の追加(サーバー側)" 
            onclick="Button1_Click" />
    </center>
</asp:Content>


このページの先頭へ戻る