Day05-1

概要

このレッスンの狙い

Calenderコントロールのイベント

Calenderコントロールの主なイベント

イベント 概要
DayRender カレンダ内の日付セルを作成するタイミングで発生
SelectionChanged カレンダ上の日付を選択したタイミングで発生
VisibleMonthChanged カレンダの表示月を変更したタイミングで発生

CalenderDayクラスの主なプロパティ

プロパティ 概要
Date 日付(DateTimeオブジェクト)
DayNumberText 日付(数値)
IsOtherMonth カレンダで表示された月以外の日付か
IsSelectable 日付は選択可能か
IsSelected 日付は選択されているか
IsToday 今日の日付か
IsWeekend 日付は週末(土日)であるか

e.Day.Date.ToString("yyyy/MM/dd")

データベースに接続する


Dim setting As ConnectionStringSetting = _
  CongigurationManager.ConnectionStrings("MyDB")
Dim factory As DbProviderFactory = _
  DbProviderFactories.GetFactory(setting.ProviderName)
Using db As DbConnection = factory.CreateConnection()
  db.ConnectionString = setting.ConnectionString
  ...中略...
  db.Open()
  ...中略...
End Using

Using句

構文


Using 変数名 As データ型 = 式
  ...処理内容...
End Using

Using命令で宣言されたオブジェクト変数はUsingブロックを出た直後に自動的に破棄されます。

データベースにコマンドを追加する


Dim comm As DbCommand = factory.CreateCommand()
comm.CommandText = "SELECT SID,SUBJECT,STIME FROM SCHEDULE WHERE SDATE=@SDATE"
comm.Connection = db

解説

CommandTextプロパティで指定されたSQL文に対して具体的なパラメータを引き渡しているのは下記の箇所である、


Dim param As DbParameter = factory.CreatePara,ter()
param.ParameterName = "@date"
param.Value = e.Day.Date.ToString("yyyy/MM/dd")
comm.Parameters.Add(param)

取得した結果セットの処理

レコードポインタ

レコードポインタの移動


Do While reader.Read()
 ...中略...
Loop

解説

HyperLinkコントロール

プロパティ 概要
ImageUrl リンクイメージ
NavigateUrl リンク先のURL
Target リンクターゲット
Text リンクテキスト

結果セットの取得

構文

DbDataReaderオブジェクト("インデックス")

結果セットの取得2

構文

DbDataReaderオブジェクト.Get型("インデックス")

データベースアクセス関連のオブジェクトのまとめ

オブジェクト名 概要
ConfigurationManager 接続文字列などの設定情報にアクセス
DbProviderFactory DbConnectionやDbCommandなどのオブジェクトを生成
DbConnection データベースの接続を管理
DbCommand パラメータ情報を管理
DbDataReader 結果セットを読み込むための手段を提供

Calenderコントロールの主なプロパティ

表示全般

プロパティ 概要
ShowDayHeader 曜日見出しを表示するか
ShowGridLines グリッドラインを表示するか
ShowNextPrevMonth 前後月へのナビゲーションを表示するか
ShowTitle タイトルを表示するか

テキスト

プロパティ 概要
Caption キャプション
CaptionAlign キャプションの配置(Top, Bottom, Left, Right)
NextMonthText 翌月を表すテキスト
PrevMonthText 前月を表すテキスト
SelectMonthText セレクタ列の月選択テキスト
SelectWeekText セレクタ列の週選択テキスト
DayNameFormat 曜日名の書式

DayNameFormat

設定値 概要
FirstLetter 最初の一文字(Ex: M)
FirstTwoLetter 最初の二文字(Ex; Mo)
Full 完全形式(Ex: MonDay)
Short 省略形式(Ex: Mon)
Shortest 現在の地域設定に対応する最も短い省略形式

NextPrevFormat

設定値 概要
CustomText カスタムのテキスト
FullMonth 完全な月名(Ex: January)
ShortMonth 省略された月名(Ex: Jan)

TitleFormat

設定値 概要
Month 月で表示
MonthYear 年月で表示

挙動

プロパティ 概要
FirstDayOfWeek 先頭の曜日

SectionMode

設定値 概要
Day 単一の日付のみを選択可能
DayWeek 単一の日付,または週を選択可能
DayWeekMonth 単一の日付,週,または月を選択可能
None 日付の選択は不可

情報

プロパティ 概要
SelectedDate カレンダ上で選択された日付
SelectedDates カレンダ上で選択された日付(配列)
TodaysDate 今日の日付
VisibleDate 表示月

スタイル

プロパティ 概要
DayHeadderStyle 曜日の外観
DayStyle 日付の外観
NextPrevStyle 前後月へのナビゲーションへの外観
OtherMonthDayStyle 現在月以外の日付の外観
SelectedDayStyle セレクタ列の外観
TitleStyle タイトルの外観
TodayDayStyle 今日の日付の外観
WeekendDayStyle 週末(土日)日付の外観

SqlDataSourceコントロールを使った書き換え

  1. SqlDataSourceコントロールのプロパティを以下のように設定する
プロパティ 設定値
ConnectionString MyDB
DataSourceMode DataReader
ProviderName System.Data.SqlClient
SelectQuery SELECT sid, subject, stime FROM Schedule WHERE (sdate= @sdate)
  1. DayReaderイベントハンドラを以下のように書き換える

<@ Import Namespace="System.Data" %>
...中略...
Protected Sub cal_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)
  sds.SelectParameters.Clear()
	sds.SelectParameters.Add("sdate", e.Day.Date.ToString("yyyy/MM/dd"))
	Dim reader As IDataReader = sds.Select(DataSourceSelectArguments.Empty)
	Do While reader.Read()
	  ...中略...
	Loop
	reader.Close()
End Sub

解説

構文

ParameterCollection.Add(パラメータ名, 値)

まとめ

以上

TOPへ