バージョン

予定の日時を制限

始める前に

スケジュール アプリケーションで共通する要件は予定時間の制限です。たとえば、業務時間のみの予定を作成することができ、週末の予定は作成できないようすることができます。

この詳細なガイドでは、制限された時間や週末に予定を追加できないようにする方法を説明します。またこれらの制限された時間内に入れるために予定を作成し直せないようにする方法も説明します。

この詳細なガイドを開始する前に、ページ上の WebScheduleInfo および WebSchedule View コントロールの設定方法をよく理解しておいてください。Web フォーム上の WebScheduleInfo を WebSchedule データベースに有効に接続する必要があります。

以下の手順を実行します。

  1. WebDayView コントロールをフォームに追加します。

WebDayView コントロールをフォームに追加して、WebScheduleInfoID プロパティを WebScheduleInfo の ID に設定します。この WebDayView はこの詳細なガイドで必要となる唯一のビューです。

  1. WebScheduleInfo の ActivityDialogEdit と ActivityUpdating クライアント側イベントを処理して予定時間を制限するコードを記述します。

ASP.NETの場合:

<ig_sched:WebScheduleInfo id="WebScheduleInfo1" runat="server">
        <ClientEvents ActivityDialogEdit="WebScheduleInfo1_ActivityDialogEdit" ActivityUpdating="WebScheduleInfo1_ActivityUpdating"></ClientEvents>
</ig_sched:WebScheduleInfo>

以下のコードは、WebScheduleInfo クライアント側オブジェクトのその他のメソッドおよびプロパティと同様に 2 つのクライアント側イベントを示しています。この件のマニュアルは、 「WebSchedule クライアント サイド オブジェクト モデル」を参照してください。

JavaScript の場合:

function WebScheduleInfo1_ActivityDialogEdit(oScheduleInfo, oEvent, oActivityEditProps ){
        if(oActivityEditProps.StartDate != null) {
                if((oActivityEditProps.StartDate.Value.getDay() == 6) || (oActivityEditProps.StartDate.Value.getDay() == 0))
                {
                        oActivityEditProps.window.alert("Appoinments cannot be set on a weekend day");
                        oEvent.cancel = true;
                }
        }
        if(oActivityEditProps.StartTime != null) {
                if(oActivityEditProps.StartTime.Value.getHours() < 9 || oActivityEditProps.StartTime.Value.getHours() > 16)
                {
                        oActivityEditProps.window.alert("Appoinments must be between 9am and 5pm");
                        oEvent.cancel = true;
                }
        }
        if(oActivityEditProps.Duration != null) {
                if(oActivityEditProps.Duration.Value > 120)
                {
                        oActivityEditProps.window.alert("Appoinments longer than 2 hours not permitted");
                        oEvent.cancel = true;
                }
        }
}
function WebScheduleInfo1_ActivityUpdating(oScheduleInfo, oEvent, oActivityUpdateProps, oActivity, id){
        if(oActivityUpdateProps.StartDateTime != null) {
                if((oActivityUpdateProps.StartDateTime.getDay() == 6) || (oActivityUpdateProps.StartDateTime.getDay() == 0))
                {
                        alert("Appoinments cannot be set on a weekend day");
                        oEvent.cancel = true;
                }
                if(oActivityUpdateProps.StartDateTime.getHours() < 9 || oActivityUpdateProps.StartDateTime.getHours() > 16)
                {
                        alert("Appoinments must be between 9am and 5pm - " + oActivityUpdateProps.StartDateTime);
                        oEvent.cancel = true;
                }
        }
        if(oActivityUpdateProps.Duration != null) {
                if(oActivityUpdateProps.Duration > 120)
                {
                        alert("Appoinments longer than 2 hours not permitted");
                        oEvent.cancel = true;
                }
        }
}
-$$->$$</script>
  1. プロジェクトを実行します。

プロジェクトをコンパイルしてページをブラウズします。9AM 前のタイムスロットをダブルクリックして、これらのクライアント側関数の動作を確認します。

業務時間中の予定を作成してみてから、5:00 以降に終了時間が発生するように予定のサイズを変更してみます。また検証も実行します。

復習

予定を追加またはスケジュール変更できる時を制限するためにクライアント側の検証コードを使用しました。ActivityDialogEdit および ActivityUpdating クライアント側イベントをよく分かるようになったと思います。

WebSchedule Walk Through Limiting Appointment Dates and Times 1.png

関連トピック