解説

ASP.NETで学ぶVisual Studio .NETの魅力

第4回 Visual Studio.NETでプログラム・レス開発を学ぶ(後編)

山田 祥寛
2003/07/29

Page1 Page2 Page3 Page4

(2)データベースに新規テーブルを作成する

 サーバ・エクスプローラ上から新規にscheduleテーブルを作成する。scheduleテーブルのレイアウトは以下のとおり。

フィールド名 データ型 概要
date datetime 日付(主キーとする)
name varchar(50) 予定名
scheduleテーブルのレイアウト

(3)データベースへの接続を設定する

 SqlConnection、SqlCommandコントロールをコンポーネント・トレイに配置しよう。それぞれのコントロールの設定方法については、前回解説した「データベースと連携した一覧の抽出」を参考にしてほしい。

 最終的には、以下のように設定がされるはずだ。

コントロール プロパティ
SqlConnection (Name) SqlConnection1
ConnectionString workstation id=>マシン名<;packet size=4096;user id=sa;data source=">マシン名<\VSDOTNET";persist security info=False;initial catalog=master
SqlCommand (Name) SqlCommand1
CommendText SELECT name FROM schedule WHERE (date = @dat)
Connection SqlConnection1
Parameters (@datが生成)
データベース関連コントロールのプロパティ

(4)コードを記述する

 これでコントロールの設定は一通り完了した。ただし、このままではただ静的な外見が出来たにすぎないので、カレンダー上の日付がクリックされたタイミングでデータベースを読み込み、ダイアログ・ボックスを表示させるようコードを記述する。

 Calendarコントロールをダブルクリックすると、コード・エディタが開き、Calendar1_SelectionChangedイベント・プロシージャにカーソルが合うはずだ。以下のように、コードを追記してみよう。

Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged
  SqlConnection1.Open()
  SqlCommand1.Parameters.Item(0).Value = Calendar1.SelectedDate
  Dim strVal As String = SqlCommand1.ExecuteScalar()
  Literal1.Text = "<script language='JavaScript'>" & _
    "window.alert('" & strVal & "');</script>"
  SqlConnection1.Close()

End Sub
Calendar1_SelectionChangedイベント・プロシージャに追加するコード
Calendarコントロールをダブルクリックすると表示されるコード・エディタで青文字部分を追記する。

 ExecuteScalarメソッドは、SqlCommandコントロールに設定されたコマンドを実行し、取得したレコード・セットの1行目1列目のデータを返す。最初からピン・ポイントでデータを取得したいという場合には便利なメソッドだ。SQLステートメントに含まれるパラメータ(SqlCommand1.Parameters.Item(0).Value)には、事前にカレンダー上で選択された日付(Calendar1.SelectedDate)を設定しておく。

 もちろん、今回のスケジュール帳のような場合には、必ずしも1日に含まれるスケジュールがひとつである保証はないが、本稿ではロジックの簡潔さを優先して、あえて1レコードのみを取得することにする。もしも1日の中にふたつ以上のレコードが存在する場合には任意の1レコードのみが取得され、2レコード目以降は無視されるので注意すること。

 上記のコードでは、取得した結果に基づいて、Literalコントロールにクライアント・サイド・スクリプトを出力する。実際に出力されるクライアント・サイド・スクリプトは以下のような内容である。

<script language='JavaScript'>
  window.alert('Sさんお打ち合わせ');
</script>
Literalコントロール部分に出力されるクライアント・サイド・スクリプト

 つまり、ASP.NETから動的にクライアント・サイド・スクリプトを出力することで、あたかも事前にクライアント・サイドでスクリプトが用意されていたかのような挙動を実現できるのだ。

 これはほんの一例にすぎないが、ASP.NETとクライアント・サイド・スクリプトを連携する好例でもあるので、よく理解できないという方も今一度確認してみてほしい。

 また、Calendarコントロール自体、リッチ・コントロールの中でも最も有用な(また有名な)コントロールのひとつであるので、SDKドキュメントで詳細を参照しつつ、さまざまな応用例を考案してみるのもよい学習になるはずである。


 INDEX
  ASP.NETで学ぶVisual Studio .NETの魅力
  第4回 Visual Studio.NETでプログラム・レス開発を学ぶ(後編)
    1.Calendarコントロールで簡易予定表を作る
  2.予定を格納するデータベースの作成
    3.Webユーザー・コントロールの作成
    4.Webユーザー・コントロールを配置する
 
インデックス・ページヘ  「解説:ASP.NETで学ぶVisual Studio .NETの魅力」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間