SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

ウィザードで入力を行うASP.NET アプリケーションの作成

「Wizard for ASP.NET Wijmo」のC1Wizardコントロールを使ったアプリケーションの作成

  • X ポスト
  • このエントリーをはてなブックマークに追加

 「ComponentOne Studio for ASP.NET Wijmo」に収録されている「Wizard for ASP.NET Wijmo」のC1Wizardコントロールを使って、簡単なファイルダウンロード操作画面を持つWebアプリケーションを作成してみます。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 Windowsフォームでおなじみのウィザードは、入力をステップごとに行ったり操作手順を分かりやすく説明するなど、ユーザーにやさしいインターフェースを提供し、複雑な入力操作や手続きの多い入力処理に高い効率化を生み出しています。

 しかしWebページでは、アンケートの入力やダウンロードといった、ステップを踏む手続き操作はページ遷移を伴います。よって、サーバや回線の負荷が高い時には、操作に若干の待ち時間が発生することがあります。

 「Wizard for ASP.NET Wijmo」のC1Wizardコントロールは、Webページにウィザード機能を組み込み、クライアント側でさまざまな動作を実行できるようにする、jQueryライブラリを利用して作られた軽量・コンパクトなコントロールです。

 ページ内でウィザード機能を実行するので、手続きのたびにページを移動したり再ロードしたりすることがなく、ユーザーにもサーバにも負荷をかけずに処理を実行させることができます。

 今回は、このC1Wizardコントロールを使い、簡単なファイルダウンロード操作画面を持ったWebアプリケーションを作成してみました。

Webページ内にウィザード機能を組み込む
Webページ内にウィザード機能を組み込む

対象読者

 Visual Basic 2010、またはVisual C# 2010を使ってプログラムを作ったことがある人。

必要な環境

 Visual Basic 2010、Visual C# 2010、Visual Studio 2010のいずれかでプログラムが作れる環境。対応ブラウザについては、グレープシティ社Webサイトの「クロスブラウザ対応」でご確認ください。

 なお、本プログラムは次の環境で開発・動作確認を行っています。

  • OS: Windows 7
  • 開発ツール: Visual Studio 2010、.NET Framework 4
  • ブラウザ: Microsoft Internet Explorer 9

サンプルプログラム実行時の注意事項

[1] Visual StudioでサンプルWebサイトを開く

 Visual Studioをお持ちであれば、ComponentOne Studio for ASP.NET Wijmo 2012Jトライアル版をインストールし、ソースコード圧縮ファイル「Wizard_Report_ASP_vb_src.zip」または「Wizard_Report_ASP_cs_src.zip」を解凍して作成されるプロジェクトファイルを、Visual Studioで開き実行させてください。

[2] Visual Studioを使わずにサンプルWebサイトを開く

 Visual Studioを使わずに、サンプルWebサイトを直接IISなどのWebサーバで開く場合は、ソースコード圧縮ファイル「Wizard_Report_ASP_vb_src.zip」または「Wizard_Report_ASP_cs_src.zip」を解凍して作成されるプロジェクトファイルを、フォルダ構成を変えずにWebサーバにインストール・登録してください。

 以下は、Microsoft IISサーバにインストールする場合の手順です。

  1. プロジェクトファイルのフォルダを、そのままWebサーバーへ配置します(例:\Inetpub\wwwroot直下へ配置)。
  2. サーバーに配置したアプリケーションフォルダに対して、「アプリケーションへの変換」を実行します。
  3. 「アプリケーションの追加」ダイアログで、「アプリケーションプール」を「Classic .NET AppPool」に設定します。
  4. クライアントのWebブラウザで、Default.aspxファイルを開きます(例:「http://localhost/mysplit_vb/Default.aspx」)。
注意事項1

 本サンプルプログラムは、レポート定義ファイルを使用しますが、このファイルはデータベースファイルへのフルパスを使用して接続文字列を作成しています。

 そのため、単純にプロジェクトファイルをお手持ちのコンピュータにインストールしただけでは正常に動作いたしません。

 サンプルプログラムを動作させる場合は、サンプルプロジェクトをインストール後、記事の解説に従ってデータベースのレポート定義ファイルを作成しなおしてから実行してください。

注意事項2

 Windows Vistaで製品のサンプルをコンパイルしようとすると、エラーが発生する場合があります。これは、Windows VistaのUAC(ユーザーアカウント制御)により、製品サンプルがインストールされているフォルダに書き込みができないため、コンパイル時にエラーが発生するという現象です。Visual Studioを管理者権限で実行するか、サンプルプロジェクト一式をアクセス権のあるフォルダに移動してからコンパイルを行うようにしてください。

 また、Webブラウザでaspxファイルを実行する際にIISサーバでエラーになる場合は、Web.configファイルに以下の1行を追加してください。

 <identity impersonate="false" />

コンポーネントのインストール

 「Wizard for ASP.NET Wijmo」を使用するには、Visual Studio、Visual Basic、Visual C#の開発環境に「ComponentOne Studio for ASP.NET Wijmo 2012J」をインストールする必要があります。

 トライアル版は、「グレープシティのWebページ」からダウンロードできます。

 ダウンロードしたい製品にチェックを付け[申込フォーム]ボタンを押すと、「トライアル版申込フォーム」ページに移動しますので、「個人情報の収集および使用に同意する」にチェックを入れ「同意する」ボタンをクリックします。

 トライアル申込フォームが表示されますので、必要情報を登録すると添付トライアルライセンスキーファイルとダウンロードサイトを記載したE-Mailが送られてきます。ここからダウンロードを行ってください。また、ダウンロードファイルは圧縮ファイルになっていますので、解凍してインストーラを起動します。

 制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。

コントロールと参照の追加

 「Wizard for ASP.NET Wijmo」をインストールしたら、プロジェクトにコントロールを追加します。

 ツールボックスに専用のタブを作成し、使用するコンポーネントを追加します。追加するコンポーネントは、アセンブリ名が「C1.Web.Wijmo.Controls.4」の「C1Wizard」コントロールです。

アセンブリ名が「C1.Web.Wijmo.Controls.4」の「C1Wizard」コントロールを選択する
アセンブリ名が「C1.Web.Wijmo.Controls.4」の「C1Wizard」コントロールを選択する

 プロジェクトに、以下のランタイムライブラリへの参照が追加されます。

ファイル 内容
C1.Web.Wijmo.Controls.4 本体アセンブリ

 また、プロジェクトに以下のランタイムライブラリが追加されます。

ファイル 内容
C1.Web.Wijmo.Controls.4.dll 本体アセンブリ

 なお、.NET Framework 4が必要です。

C1Wizardコントロールの概要

 「Wizard for ASP.NET Wijmo」のC1Wizardコントロールは、Webページにウィザード機能を実装するコントロールで、一連のフォームを作成して、画面の面積を節約したり、入力タスクを簡素化したりすることができます。

 C1Wizardコントロールは一種のコンテナコントロールで、設定した子要素(ステップ)内にいろいろなコントロールを配置してコンテンツを作成します。

 子要素はいくつも組み込むことができ、ステップを移動するナビゲーションボタンが用意されています。

 C1Wizardコントロールは、次のいくつかの機能を備えています。

リッチコンテンツ

 単にドラッグ&ドロップ操作を行うだけで、画像、テキスト、コントロールをC1Wizardコントロール内のページに追加します。コンテンツのカスタマイズは、標準パネルコントロールのデザインと同様に簡単にできます。

外部コンテンツ

 プロジェクト内の別のWebページのコンテンツまたはプロジェクト外のWebサイトのコンテンツを、C1Wizardコントロール内に表示します。

オートプレイ

 オートプレイ機能を使用してページ間を自動的に移動します。ページの遷移間の遅延の設定を含む、オートプレイをカスタマイズします。

アニメーション

 直線的なイージングまたはしなやかなイージングなど、ページ間の遷移に対する組み込み遷移効果から選択します。オプションで、独自のカスタム効果を作成し、持続時間を変更します。

オンデマンドでのコンテンツのロード

 クライアント側で現在選択されたページのみ表示するようにC1Wizardを設定し、最初のページのサイズとロード時間を削減します。

テーマ

 スマートタグをクリックするだけで、6種類のプレミアムテーマ(Arctic、Midnight、Aristo、Rocket、Cobalt、およびSterling)のいずれかを選択して外観を変更します。オプションとして、jQuery UIからThemeRollerを使用してカスタマイズしたテーマを作成することもできます。

6種類のテーマ(ヘルプより抜粋)
6種類のテーマ(ヘルプより抜粋)
CSSのサポート

 CSS(Cascading Style Sheet)のスタイルを使用して、カスタムスキンを定義します。

デザイナによるページの編集

 C1Wizardコントロールそのもののプロパティ設定はプロパティウィンドウで行いますが、ステップの追加やデザインは専用のデザイナを使用して行います。

C1Wizardコントロールの構成要素

 C1Wizardコントロールは、次の要素から構成されています。

C1Wizardコントロールの構成(ヘルプより抜粋)
C1Wizardコントロールの構成(ヘルプより抜粋)
ステップヘッダー

 ステップヘッダーセクションには、ウィザードのステップごとのヘッダーが含まれています。ヘッダーを表示しない場合は、ウィザードのShowStepHeaderプロパティをFalseにします。

 ステップヘッダーには以下の項目が含まれています。

  • <タイトル> ステップヘッダーのタイトルはC1WizardStepのTitleプロパティを使用して設定されます。
  • <説明> ステップヘッダーの説明はC1WizardStepのDescriptionプロパティを使用して設定されます。

 ステップヘッダーのスタイルは、StepHeaderTemplateを使用して書式設定できます。

 また、StepHeaderTemplateプロパティには、C1Wizardコントロールの各ステップのヘッダーに使用するHTMLテンプレートが用意されています。

 デフォルトでは、C1WizardコントロールのStepHeaderTemplateプロパティは「<h2>#{title}</h2>#{desc}」に設定され、Title/Descriptionプロパティを設定して、ヘッダーの表示を変えることができます。

ヘッダーの表示例(ヘルプより抜粋)
ヘッダーの表示例(ヘルプより抜粋)
コンテンツ領域

 C1Wizardコントロールは、書式設定済みテキスト、任意のコントロール、およびテーブルなどのコンテンツを保持することができます。

 C1Wizardコントロールには、C1WizardStepタグ内でサーバーコントロールを宣言するだけで、任意のコントロールを追加できます。例えば、次のマークアップでは、ButtonサーバーコントロールがC1Wizardコントロールの最初のページ内に追加されます。

<wijmo:C1WizardStep ID="C1WizardStep01" runat="server">
	<asp:Button ID="Button1" runat="server" Text="ボタン" />
</wijmo:C1WizardStep>
ナビゲーションバー

 デフォルトのC1Wizardコントロールでは、ナビゲーションバーにユーザーが1つのステップから次のステップに移動できるボタンが含まれています。ナビゲーションは、コントロールの側面に表示したり、コントロールから完全に削除したりすることもできます。

 ナビゲーションバーは、CommonとEdgeという2つのタイプが用意されており、Commonスタイルは〈戻る〉および〈次へ〉ボタンで表示され、Edgeスタイルはコントロールの左側の戻る矢印およびコントロールの右側の次へ矢印で表示されます。

2種類のナビゲーションバー(ヘルプより抜粋)
2種類のナビゲーションバー(ヘルプより抜粋)

 なお、ComponentOne Studio for ASP.NET Wijmo(ウィジモ)の特徴については、ComponentZineの記事『ASP.NETにWijmoの表現力を取り入れて最新Web環境を手軽に構築する - 「ComponentOne Studio for ASP.NET Wijmo 2012J」の利用』で紹介しています。こちらもご参照ください。

Webページのデザイン

 では、さっそくアプリケーションを作成していきましょう。

 作成するアプリケーションは、ファイルのダウンロード手順をウィザードで表示するWebページです。

ページのレイアウト

 メインページで使用するコントロールはC1Wizardコントロールだけですが、各ステップのページではLabel、RadioButton、TextBox、Buttonの各コントロールを使用しています。

ページレイアウト(Step1)
ページレイアウト(Step1)
ページレイアウト(Step2)
ページレイアウト(Step2)
ページレイアウト(Step3)
ページレイアウト(Step3)
ページレイアウト(Step4)
ページレイアウト(Step4)

プロジェクトの準備とコントロールの配置

 まずは、ASP.NETアプリケーション用プロジェクトを用意します。マスターページを使う場合は、適宜不要な部分を削除するなど編集しておきます。

 ① フォームにC1Wizardコントロールをドラッグ&ドロップします。最初は、ステップが1つもないC1Wizardコントロールなので、ここにステップを追加していきます。C1Wizardコントロールのスマートタグを開き、「デザイナを開く」メニューをクリックします。

スマートタグから「デザイナを開く」メニューをクリック
スマートタグから「デザイナを開く」メニューをクリック

  「C1Wizardデザイナフォーム」が表示されますので、ツールバーの「子要素の追加」ボタンをクリックします。これで、「Step1」というステップが追加されます。

ツールバーの「子要素の追加」ボタンをクリック
ツールバーの「子要素の追加」ボタンをクリック

  ツールバーの「子要素の追加」ボタンを3回クリックし、全部で4つのステップを追加します。

  「Step1」をクリックし、「Title」を「アイテムの選択」に変更し、BackColorプロパティを「#FFFFCC」に設定します。

「Title」を「アイテムの選択」に変更し、BackColorプロパティを「#FFFFCC」に設定
「Title」を「アイテムの選択」に変更し、BackColorプロパティを「#FFFFCC」に設定

  この操作をStep2からStep4まで繰り返し、「Title」のテキストを変更しBackColorプロパティを「#FFFFCC」に設定します。

ステップ Title
Step2 個人情報の保護
Step3 ユーザー情報の入力
Step4 ダウンロードの実行

 ここで、C1WizardデザイナフォームのOKボタンをクリックして閉じます。

 これで、C1Wizardコントロールに4つのステップが追加され、ヘッダーが設定されます。

4つのステップが追加されヘッダーが設定される
4つのステップが追加されヘッダーが設定される

  C1Wizardコントロールのプロパティウィンドウを使い、C1Wizardコントロールのサイズや動作を次のプロパティで設定します。

プロパティ 設定値
AutoPostBack True
NaviButtons Common
Height 400
Theme Cobalt
Width 540

 ナビゲーションバーは、「前へ」「次へ」のボタンタイプに変更します。テーマは「Common」を使用し、C1Wizardコントロール全体をコンパクトにします。

  ステップヘッダーがかなり大きいので、フォントを少し小さくします。プロパティウィンドウで「StepHeaderTemplate」プロパティの値欄をクリックし、「<h1>#{title}」を「<h3>#{title}」に変更します。

<h1>#{title}</h1>#{desc} ⇒ <h3>#{title}</h3>#{desc}

 これで、ステップヘッダーのサイズが小さくなります。

 以上で、メインページとC1Wizardコントロールのデザインが出来上がりです。

Step1 ページの作成

 続いて、各ステップページにコントロールを配置し、コンテンツを作成していきます。

  コンテンツ領域をクリックし、ここに「ダウンロードするアイテムを選択してください」という文字を入力します。C1Wizardコントロールは、コンテナの機能を持っていながら、コンテンツ領域に直接文字列を入力することができます。

  RadioButtonコントロールを3つ配置し、以下のプロパティを設定します。「RadioButton1」だけ、Checkedプロパティを「True」に設定します。

プロパティ プロパティ 設定値
RadioButton1 Text 製品カタログ
GroupName group1
Checked True
RadioButton2 Text 取扱説明書-基本操作
GroupName group1
RadioButton3 Text 取扱説明書-応用操作
GroupName group1
出来上がったStep1ページ
出来上がったStep1ページ

Step2 ページの作成

 続いて、Step2ページを作成します。このページは、コントロールは使用せずC1Wizardコントロールに直接文字列を入力します。

  C1Wizardコントロールのプロパティウィンドウにある「ActiveIndex」プロパティを「1」に変更します。これで、ステップ「Step2」が表示されます。

  C1Wizardコントロールのコンテンツ領域内にテキストを入力します。入力した文字列が多くてVisual Studioのデザイナではすべて表示しきれていませんが、アプリケーションを実行するとC1Wizardコントロールは自動的にサイズ調節を行い、コンテンツがすべて表示されるようになります。

C1Wizardコントロールのコンテンツ領域内にテキストを入力
C1Wizardコントロールのコンテンツ領域内にテキストを入力

Step3 ページの作成

 このページでは、ユーザー情報を入力するインターフェースを作成します。そして、メールアドレスを入力しないと次のページが表示されないようにします。

  C1Wizardコントロールの「ActiveIndex」プロパティを「2」に変更します。これで、ステップ「Step3」が表示されます。

  C1Wizardコントロールのコンテンツ領域内にテキストを入力します。

  Label、TextBox、CheckBox、Buttonコントロールを使用して、入力インターフェースを作成します。

  メールアドレス入力用テキストボックス「TextBox3」のみ、TextChangedイベントハンドラを作成します。

  「TextBox3」のAutoPostBackプロパティをTrueにしておきます。

出来上がったStep3ページ
出来上がったStep3ページ

Step4 ページの作成

 最後にStep4ページを作成します。このページは、デザイン終了後非表示にしておき、Step3ページでメールアドレスが入力されると表示されるようにします。

  C1Wizardコントロールの「ActiveIndex」プロパティを「3」に変更します。これで、ステップ「Step4」が表示されます。

  Buttonコントロールを配置し、Textプロパティを「ダウンロードの開始」に変更します。

  C1Wizardコントロールのスマートタグから「デザイナを開く」をクリックし、「C1Wizardデザイナフォーム」を開きます。

  左ペインのツリー表示から「Step4」をクリックし、「Visible」プロパティを「False」に変更します。これで、Webアプリケーション起動時はステップ「Step4」は表示されなくなります。

 OKボタンをクリックして「C1Wizardデザイナフォーム」を閉じます。

「C1Wizardデザイナフォーム」で「Visible」プロパティを「False」に変更する
「C1Wizardデザイナフォーム」で「Visible」プロパティを「False」に変更する

  最後に、C1Wizardコントロールの「ActiveIndex」プロパティを「0」に変更し、ステップ「Step1」が表示されるようにします。

 以上で、C1Wizardコントロールと4つのステップページが出来上がりです。

Step5 ページの表示・非表示切り替え処理

 メールアドレス入力用テキストボックス「TextBox3」のTextChangedイベントハンドラで、Step4ページの表示・非表示を切り替える処理を行います。

 処理は単純に、テキストボックスに入力があった場合はStep4ページを表示し、入力がない場合は非表示にするだけです。

 これは、Step4ページの「Visible」プロパティを操作します。TextBoxコントロールのTextChangedイベントはテキストが入れ替わると発生しますが、TextBoxコントロールからフォーカスが移動した時点で発生します。ダミーでOKボタンを使用しこれをクリックした時点でTextBoxコントロールからフォーカスが移り、TextChangedイベントハンドラが実行されるようにしています。

 ButtonコントロールのClickイベントハンドラを使うという手もありますが、AutoPostBackプロパティがないため、イベントハンドラの処理を反映させることができないので、TextBoxコントロールのTextChangedイベントを利用しました。

Visual Basic
Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
        If TextBox3.Text <> "" Then
            C1Wizard1.Steps(3).Visible = True
        Else
            C1Wizard1.Steps(3).Visible = False
        End If
    End Sub
End Class
C#
namespace Wizard_ASP_cs
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void TextBox3_TextChanged(object sender, EventArgs e)
        {
            if (TextBox3.Text != "")
            {
                C1Wizard1.Steps[3].Visible = true;
            }
            else
            {
                C1Wizard1.Steps[3].Visible = false;
            }

        }
    }
}

まとめ

 ウィザードを使うことで、1つのWebページ内に複数ページのコンテンツを作成できるので、ユーザーにやさしい操作性を提供するとともに、ハイパーリンクだらけのページに比べWebページの管理もしやすくなります。

 今回は、ダウンロードの手順をウィザードで作成してみましたが、ページをめくるという操作から手順書の表示や図鑑・本など、アイデア次第でいろいろな使い方ができるのではないでしょうか。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6985 2013/02/15 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング