ASP.NET GridViewのホームへ戻る

GridViewにアマゾンの書籍を表示する (GridView10.aspx)

 

アマゾンのWebサービスを利用して書籍の検索結果をGridViewに表示するサンプルを作成します。このサンプルは、以下のノウハウうを習得することができます。

 

  アマゾンのWebサービスを利用する方法

  アマゾンのWebサービスを利用したクラスを作成する方法

  GridViewImageFieldの使い方

  GridViewHyperLinkFieldの使い方

 

図 アマゾンの検索結果をGridViewに表示

 

●アマゾンWebサービルを利用するための前準備

 

1. App_Codeフォルダ作成

 

ソリューションエクスプローラのプロジェクトのクリックから[フォルダの追加]-[App_Codeフォルダ]を選択します。ソリューションエクスプローラにApp_Codeフォルダが表示されます。

 

2. WSDLApp_Codeフォルダに保存

 

ブラウザ(IE)を起動したら「アドレス」に次のURLを入力してアマゾンWebサービスのWSDLを表示します。

 

http://webservices.amazon.com/AWSECommerceService/JP/AWSECommerceService.wsdl

 

 

ブラウザにWSDLが表示されたら、ブラウザの[ファイル]メニューから[名前を付けて保存]を選択します。「名前を付けて保存」のダイアログが表示されたら、「保存する場所」から「C:\CH1\App_Code」を選択します。「ファイル名」に「AWSECommerceService.wsdl」を入力したら[保存]ボタンをクリックして閉じます。

 

図 ブラウザにアマゾンのWSDLを表示

 

 

図 アマゾンのWSDLApp_Codeフォルダに保存

 

ソリューションエクスプローラから[最新の情報に更新]のボタンをクリックしてApp_Codeフォルダを展開すると「AWSECommerceServices.wsdl」が表示されます。

 

 

2. Amazonクラスを作成

 

C:\CH1\App_Code」からAmazon.vbをコピーしたら「C:\CH1\App_Code」に貼り付けします。ソリューションエクスプローラのApp_Code直下に「Amazon.vb」が表示されます。

 

 

GridViewにアマゾンの検索結果を表示

 

 

1. 新規Webページ作成

 

ソリューションエクスプローラのプロジェクトの右クリックから[新しい項目の追加]を選択して、新規Webページ「GridView10.aspx」を作成します。

 

 

2. コントロール作成

 

デザイナにGridView10.aspxが表示されたら、ツールボックスの「データ」から[GridView]をドラッグ&ドロップします。デザイナにGridView1のオブジェクトが作成されたら、「GridViewタスク」から[オートフォーマット]を選択して「スキームの選択」から[シンプル]を選択して[OK]をクリックします。

 

 

GridViewタスク」から[列の編集]を選択します。「フィールド」が表示されたら「使用できるフィールド」から[BoundField]を選択して[追加]ボタンをクリックします。同様の手順で[ImageFieled][HyperLinkFiled]を選択したら[追加]ボタンをクリックして追加します。「選択されたフィールド」からフィールドを選択したら表に示すプロパティを設定します。最後に、「自動生成フィールド」のチェックを外したら[OK]をクリックして閉じます。

 

 

表フィールドのプロパティ

 

列の種類

DataField

HeaderText

DataAlternateTextField

DataImageUrlField

DataNavigateUrlFields

DataTextField

Target

BoundField

AutoID

No

 

 

 

 

 

ImageField

 

表紙

Title

MediumImage

 

 

 

HyperLinkField

 

タイトル

 

 

AmazonUrl

Title

_blank

 

 

図「フィールド」ダイアログからGridViewの列を追加

 

3. Page_Loadイベントハンドラ追加

 

デザイナの未使用領域をダブルクリックします。コードビューが表示されたら、Page_Loadイベントハンドラに次のコードを追加します。

 

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

  GridView1.DataSource = AmazonServices.AmazonJP.SearchBooksByNode("465610", 1)

  GridView1.DataBind()

End Sub

 

 

4. ブラウザに表示

 

VWD 2005のツールバーから[デバッグの開始]ボタンをクリックしてブラウザを表示します。ブラウザが起動されると、GridViewに書籍の検索結果が表示されます。

 

 

図 GridViewにアマゾンの検索結果が表示された

 

 

◆解説

 

アマゾンのWebサービスを利用するには、App_CodeフォルダにアマゾンWebサービスのWSDLを保存します。App_CodeWSDLファイルを保存すると、ASP.NETが自動的にWebサービスのプロキシクラスを生成します。

 

アマゾンのWebサービスを利用するには、このほかにソリューションエクスプローラの「プロジェクト」の右クリックからWSDLURLを入力する方法もあります。

 

書籍を検索するには、アマゾンのWebサービスで用意されているメソッドを利用します。ここでは、ASP.NETから利用しやすいように専用のクラス(Amazon.vb)を作成します。ASP.NETのクラスは、App_Codeフォルダに格納すると自動的にコンパイルされます。Amazon.vbには、次の3種類のメソッドが用意されています。

 

  SeachBookByISBN – 書籍をISBNで検索

  SearchBooksByNode - 書籍をジャンル別(ノード番号)に検索

  SearchBooks - 書籍を著者名、タイトル、キーワードで検索

 

これらのメソッドを利用して検索した結果は、DataViewに格納されて返れます。DataViewは表に示す列から構成されています。

 

DataViewの列

No

列名

内容

1

AutoID

シーケンス番号

2

ASIN

ISBN番号

3

SmallImage

表紙のイメージ(小)

4

MediumImage

表紙のイメージ(中)

5

LargeImage

表紙のイメージ(大)

6

AmazonURL

書籍のURL

7

Title

書名

8

Author

著者名

9

ListPrice

定価

10

SalesRank

ランク

11

PublicationDate

発刊日

12

Publisher

出版社

13

Binding

製本(単行本、大型本、・・・)

 

GridViewにシーケンス番号(AutoID)、表紙のイメージ(MediumImage)、アマゾンへのリンク(AmazonUrl)を表示するには、BoundFieldImageFieldHyperLinkFieldを追加します。

 

<asp:GridView ID="GridView1" runat="server"

  AutoGenerateColumns="False"・・・>

  <Columns>

    <asp:BoundField DataField="AutoID"

      HeaderText="No">

    </asp:BoundField>

    <asp:ImageField DataAlternateTextField="Title"

      DataImageUrlField="MediumImage" HeaderText="表紙">

    </asp:ImageField>

    <asp:HyperLinkField DataNavigateUrlFields="AmazonUrl"

      DataTextField="Title" HeaderText="タイトル">

    </asp:HyperLinkField>

  </Columns>

</asp:GridView>

 

 

アマゾンの書籍データベースからジャンル別で検索してGridViewに結果を表示するには、Page_Loadイベントハンドラに次のコードを追加します。SearchBooksByNodeメソッドは、書籍をジャンル別に検索します。SearchBooksByNodeの引数には、表に示すノード番号とページ番号を指定します。

 

SearchBooksByNodeから返されたDataViewを、GridViewDataSourceプロパティに設定して、DataBindメソッソを実行すると、検索結果がGridViewに表示されます。

 

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

  GridView1.DataSource = AmazonServices.AmazonJP.SearchBooksByNode("465610", 1)

  GridView1.DataBind()

End Sub

 

 

アマゾンのノード番号と名称

ノード番号

名称

465610

ベストセラー

466282

ビジネス・経済・キャリア

492054

投資・金融・会社経営

571584

社会・政治

571582

人文・思想

466284

文学・評論

466286

歴史・地理

・・・

・・・

3148931

教育・学参・受験

500592

タレント写真集

 

 

ASP.NET GridViewのホームへ戻る