■GridViewにアマゾンの書籍を表示する (GridView10.aspx)
アマゾンのWebサービスを利用して書籍の検索結果をGridViewに表示するサンプルを作成します。このサンプルは、以下のノウハウうを習得することができます。
▼ アマゾンのWebサービスを利用する方法
▼ アマゾンのWebサービスを利用したクラスを作成する方法
▼ GridViewのImageFieldの使い方
▼ GridViewのHyperLinkFieldの使い方

図 アマゾンの検索結果をGridViewに表示
●アマゾンWebサービルを利用するための前準備
1. App_Codeフォルダ作成
ソリューションエクスプローラのプロジェクトのクリックから[フォルダの追加]-[App_Codeフォルダ]を選択します。ソリューションエクスプローラにApp_Codeフォルダが表示されます。
2. WSDLをApp_Codeフォルダに保存
ブラウザ(IE)を起動したら「アドレス」に次のURLを入力してアマゾンWebサービスのWSDLを表示します。
http://webservices.amazon.com/AWSECommerceService/JP/AWSECommerceService.wsdl
ブラウザにWSDLが表示されたら、ブラウザの[ファイル]メニューから[名前を付けて保存]を選択します。「名前を付けて保存」のダイアログが表示されたら、「保存する場所」から「C:\CH1\App_Code」を選択します。「ファイル名」に「AWSECommerceService.wsdl」を入力したら[保存]ボタンをクリックして閉じます。

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

図 アマゾンのWSDLをApp_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_CodeにWSDLファイルを保存すると、ASP.NETが自動的にWebサービスのプロキシクラスを生成します。
アマゾンのWebサービスを利用するには、このほかにソリューションエクスプローラの「プロジェクト」の右クリックからWSDLのURLを入力する方法もあります。
書籍を検索するには、アマゾンの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)を表示するには、BoundField、ImageField、HyperLinkFieldを追加します。
<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を、GridViewのDataSourceプロパティに設定して、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 |
タレント写真集 |