• 検索結果がありません。

DataLIst コントロールにフォルダ内のファイルを読み込む

ドキュメント内 スポーツ写真販売サイト作成(1) (ページ 105-135)

第 2 章 Web サイト管理

5. DataLIst コントロールにフォルダ内のファイルを読み込む

「PuroductsUpload.aspx」のデザインビュー及びコードビューを並べて表示します

左列にツールボックスから「DataListコントロール」をドラッグドロップします(htmlコードビュー内に ドラッグアンドドロップしたほうがやりやすいです)、IDを「ImageList」にします。デザインビューの

「ImageList」を選択して、右肩のタスクメニューー>「データソースの選択」->ドロップダウンリスト からー>「新しいデータソース」、表示されたダイアログから、「オブジェクト」を選択します。「データソー スにIDを指定します」の入力欄に「ObjGetImages」にします。下図

「OK」ボタンクリック後、下図が表示されます。

「ビジネスオブジェクトの選択」をドロップダウンして、一覧が頭文字Aから、アルファベット順に表示さ

SkyOceanに戻る

れていますので、約50行目位の頭文字Bの次の「DataAccess」を選択します。次図

「次へ」ボタンをクリック、表示された「データメソッドの定義」の画面の、メソッドの選択のドロップダ ウンリストから「ListUpload(),、戻り値 ICollection」を選択します。 下図 (注:ListUpload()が表示さ れない場合、Webサイトを一度「プラウザーで表示」を実行して下さい。新しいクラスを作成した場合、コ ンパイルして、VSに認識させる事が必要です)

「完了」ボタンをクリック、終了します。。

SkyOceanに戻る

次に、「ImageList」の右肩のタスクメニューから、「テンプレートの編集」->「ItemTemplate」表示しま す、その空白の欄に、「Labelコントロールをドラッグドロップします。IDを「LblFile」にします、

「LblFile」を選択状態にして、右肩のタスクから、「DataBindingsの編集」をクリックします。

表示されたダイアログの「カスタムバインド」の入力欄に、「Container.DataItem」と入力します。次図

「OK」ボタンをクリックします。

次に、テンプレート編集の状態で、タスクメニューから、ドロップダウンを開いて、最下行の「区切り記号 テンプレート」を選択します。空白の部分に、日本語入力で、「しかく」と入力して、黒い■を入力して下さ い。下図

「テンプレート編集の終了」をします。

次に、DataListコントロールの「ImageList」を選択状態にして、プロパティウインドウを表示して、下表 のように設定します

ID名 プロパtィ名

ImageList RepeatDirection Horizontal

RepeatColumns 5

Width 100%

BorderColor Black

BorderStyle Solid

BorderW”idth 1px

SkyOceanに戻る

テーブルコントロールを挿入して、BootStrap のテーブルに変身する

次に、htmlビューで、「ImageList」の直下に<br />コードを追加して,次に「1行3列」のテーブルを挿入 して下さい

そして、BootstrapのCSS“table”クラス(class=”table table-striped”)に

変えます、次に、1列目にLabelコントロール」を配置して下さい、IDを“LblPrice”にします。

次に、2列目にTextBoxコントロールを配置して下さい。IDを“TextMyPrice”にします。

次に、3列目にButtonコントロールを配置して下さい、IDを“BtnNext”にします。

テーブル内の各コントロールのプロパティ表

コントロールID名 プロパティ名 値

LblPrice Text 価格

TextMyPrice TextMode Number

Width 50px

日本語入力(htmlコード) “style=”ime-mode: inactive”

BtnNext Text 次へ

次に、テーブルの1列目の上枠にカーソルを持っていき、下向きの↓出現させて、列全体が選択状態になっ ていることを確認して、プロパティウインドウの下から6行目の“style”プロパティをクリックして、右 側のボタンをクリックして、「スタイルの変更」ダイアログを表示します、「カテゴリの選択」の“ブロッ ク”を選択します、右側に表示された、「textalign」のドロップダウンをクリックして、“right”を選択し ます。そのままの状態で、「カテゴリの選択」欄の“配置”を選択して、Widthを150pxにして下さ い。「OK」ボタンをクリックして、終了します。次に、テーブル全体を選択して、styleプロパティから、

「背景」を読者様で任意の色を選択して設定して下さい。そして下記の<tr>の部分に“class=”warning””

と言う文字を追加します。(赤色部分)。テーブルのhtmlコードは下記のようになっています。

<table class="table table-striped"" style="background-color: #FFCC99">

<tbody style="background-color: #FFCC99">

<tr class=”warning”>

<td style="text-align: right; width: 150px;">

<asp:Label ID="LblPrice" runat="server" Text="Label"></asp:Label>

</td>

<td>

<asp:TextBox ID="TextBox1" runat="server" Width="50px"></asp:TextBox>

</td>

<td>

<asp:Button ID="BtnNext" runat="server" Text="次へ" />

</td>

</tr>

</table>

次に、「TxtMyPrice」に、空白を許可しない、「RequiredFieldValidatorコントロール」を関連つけます。

ツールボックスの「検証」タブから、「RequiredFieldValidatorコントロール」を「BtnUp」の直後に配置 します。プロパティウインドウから、下図のように「ControlToValidate」「ErrorMessage」「ForeColor」の 3か所を設定してください。

SkyOceanに戻る

ここまでで、テーブルのデザインは、下図のようになっています。(テーブルの背景色は任意です)

上図のテーブルを「Panelコントロール」で抱合して下さい、IDを“PanelPrice”にします。Visibleプロパ ティは、Trueにします。下記htmlコードを参考にして下さい。赤のコード部分

<asp:Panel ID="PanelPrice" runat="server">

<table class="table table-striped" style="background-color: #E3FDC1">

<tr>

<td style="text-align: right; width: 150px">

<asp:Label ID="LblPrice" runat="server" Text="Label"></asp:Label>

</td>

<td>

<asp:TextBox ID="TxtMyPrice" runat="server" TextMode="Number"

Width="50px" syle="ime-mode:inactive;"></asp:TextBox>

</td>

<td>

<asp:Button ID="BtnNext" runat="server" Text="次へ" />

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"

ControlToValidate="TxtMyPrice" ErrorMessage="数字で、価格を入力して下さい"

ForeColor="Red"></asp:RequiredFieldValidator>

</td>

</tr>

</table>

</asp:Panel>

ブラウザーで表示して、実行します。

「TxtMyPrice」に数字でなくて、文字を入力して「BtnUp」をクリックして、挙動を確認して下さい、エラ ーの表示がでます、そのままで「TxtMyPrice」が空白の状態で、「BtnUp」をクリックして挙動を確認して 下さい、続いて「TxtMyPrice」に数字を入力して、「BtnUp」をクリックして挙動を確認して下さい。

実行画面を閉じます

SkyOceanに戻る

Bootstrap の Panel で見栄えをよくする

次に、「ImageList」と先程のテーブルをBootStrapのCmponentsの「Panel」で抱合します。

上図のHtmlコード18行目の「DataList」タグの直上にBootstrapの「Panel」のヘッダー部の下記の コードをを追加します。網掛け部分 (上図の行番号は、筆者の環境の場合であって読者様の場合とは 一致しない場合があります)

<h4>左列</h4>

<div class="panel panel-primary">

<div class="panel-heading"></div>

<div class="panel-body">

<asp:DataList ID="DataList1" runat="server" BorderColor="Black"

続いて、Bootstrapのフッター部分のコードをテーブルの終了タグ</table>の直下に追加します。下記の位置

</tr>

</table>

</div>

<div class="panel-footer">価格を入力して「次へ」ボタンをクリック</div>

</div>

下図は、BootstrapのPanelのコードを追加した、デザインビューの画面です。

次に、今、追加したBootstrapのPanelのヘッダー部のhtmコード部分に追加の作業をします。

下記のhtmコードのヘッダー部「<div class=”panel-heading”>と</div>の間に、ツールボックスから、「Label コントロール」をhtmlコード上で、ドラッグアンドドロップして下さい。

<h4>左列</h4>

<div class="panel panel-primary">

<div class="panel-heading"></div>

<div class="panel-body">

htmlコードは下記のようになります、「Labelコントロール」のIDを“LblDLCount”にして下さい。

<h4>左列</h4>

<div class="panel panel-primary">

<div class="panel-heading">

<asp:Label ID="LblDLCount" runat="server" Text="Label"></asp:Label></div>

<div class="panel-body">

SkyOceanに戻る

DataList コントロール「ImageList」にファイルがない場合のプログラム

次に、「Admin_ProductsUpload_Load」を選択、作成して、そのイベントハンドラー内に下記のコードを追 加します。網掛け部分(コピペ可能)

ソリューションエクスプローラの「UploadImages」フォルダが空であることを確認して下さい。

ブラウザーで表示、実行します。下図は、実行画面です。

まだ、「UploadImages」フォルダにはImageFileが一つもないので「LblDLCount」に“アップロードフォ ルダーは空ですUploadImagesフォルダにファイルを追加して下さい”と表示されています。

実行画面を閉じます。

Private Sub Admin_ProductsUpload_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then

If ImageList.Items.Count = 0 Then

LblDLCount.Text = "アップロードフォルダーは空です。 UploadImagesフォルダにファ イルを追加して下さい"

PanelPrice.Visible = False End If

End If End Sub

SkyOceanに戻る

DataList コントロール「ImageList」にファイルがある場合のプログラム

次に、アップロードフォルダーにファイルがある場合のプログラムをします。

プログラムコードファイルに移って「Admin_ProductsUpload_Load」に下記のコードを追加します。

赤いコードが追加コードです。

Private Sub Admin_ProductsUpload_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then

If ImageList.Items.Count = 0 Then

LblDLCount.Text = "アップロードフォルダーは空です。 UploadImagesフォルダにファ イルを追加して下さい"

PanelPrice.Visible = False

ElseIf ImageList.Items.Count > 0 Then

LblDLCount.Text = "アップロードフォルダーに " & ImageList.Items.Count.ToString()

& "個のファイルがあります"

End If End If End Sub

次に、ソリューションエクスプローラの「UploadImages」フォルダにCDの「TutoNo1」の「SportsPhotos」

の「BaseBall」フォルダの「安木小野球」のフォルダを開き、3個ほどファイルを追加して下さい。

そして、ブラウザーで表示して、実行します。

今度は、「UploadImages」フォルダにはImageFileが存在したので、下図のような表示になります。

実行画面を閉じます。

SkyOceanに戻る

次は、価格の入力と「次へ」ボタンのプログラムをします。

価格について、本サイトの場合大量のスポーツ写真を販売するので、1枚づつの写真に価格を設定するのは 現実的ではありません。スポーツの大会の知名度等によって、そのイベントのひとかたまりの写真群として 1枚当たりの価格を考えた方が妥当だと思います。したがって本チュートリアルの場合ひとかたまりの中の 一枚の価格を設定します。

商品ごとに価格を設定することもできます、1個づつアップロードして、価格をその都度設定すればいいの です。

「次へ」ボタンの役割は、価格の入力を確認して、アップロード先のイベント名(大会名)を選択するため

のTreeViewを表示する役を利を担います。

価格の入力用の「TxtMyPrice」には、確実に価格データが入力されるように、検証コントロールが関連つけ られています。下記コードです。

“<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"

ControlToValidate="TxtMyPrice" ErrorMessage="数字で、価格を入力して下さい"

ForeColor="Red"></asp:RequiredFieldValidator

同時に、「TxtMyPrice」の“TextMode”プロパティは、下図のように「Number」に設定しています。

検証コントロールについては、VSのヘルプ“検証コントロール”で検索、参照して下さい。

本チュートリアルでは、別章で検証コントロールの使用法を紹介しています。

「次へ」ボタンのクリックイベントのプログラムする前に、アップロード先を設定する、TreeViewを作成し ます。

ドキュメント内 スポーツ写真販売サイト作成(1) (ページ 105-135)

関連したドキュメント