ASP.NET 徹底活用術(Part2)のホームへ戻る

■グーグルの検索結果をDataGridに表示 (Google1.aspx)

 

グーグルのWebサービス経由で検索した結果を、DataGridに表示するサンプルを作成します。新規Webフォームを作成したら、ツールボックスからTextBoxButtonをドラッグ&ドロップします。デザイナにTextBox1Button1のオブジェクトが作成されたら、<fieldset>…</fieldset>タグで囲みます。

 

<fieldset>

  <asp:textbox id="txtSearchTerm" runat="server" Width="20em"></asp:textbox>

  <asp:button id="btnSearch" runat="server" Text="検索"></asp:button>

</fieldset>

 

[テーブル]メニューから[挿入]-[テーブル]を選択します。「表の挿入」が表示されたら2x1の表を作成します。デザイナに表が作成されたら、ツールボックスからDropDownListをドラッグして1行目にドロップします。同様の手順で、2行目にDataGridをドラッグ&ドロップします。

 

<table width="100%">

<tr>

  <td align="right">

    <asp:dropdownlist id="dropPages" runat="server"></asp:dropdownlist>

  </td>

</tr>

<tr>

  <td align="left">

  <asp:datagrid id="dgrdResults" runat="server" AutoGenerateColumns="False" ・・・>

  </asp:datagrid>

  </td>

</tr>

</table>

 

DropDownListのプロパティウィンドウからAutoPostBackプロパティに「True」、Visibleプロパティに「False」を設定します。

 

DataGridの右クリックから[自動フォーマット]を選択します。「自動フォーマット」が表示されたら、「スキームの選択」から[カラフル2]を選択して[OK]をクリックします。

 

DataGridの右クリックから[プロパティビルダ]を選択します。「dgrdResultsプロパティ」が表示されたら、左側から[]を選択します。「実行時に自動的に列を作成する」のチェックを外したら、「使用可能な列」から[連結列]を選択して[>]ボタンをクリックします。BoundColumnプロパティの「ヘッダーテキスト」に「No」、「データフィールド」に「AutoID」を入力します。同様の手順で、表3に示す列を追加します。

 

表3:DataGridに追加する列

列の種類

ヘッダーテキスト

データフィールド

テキストフィールド

URLフィールド

ターゲット

連結列

No

AutoID

 

 

 

ハイパーリンク列

タイトル

 

Title

URL

_blank

連結列

スニペット

Snippet

 

 

 

 

 

2:表にTextBoxButtonDropDownListDataGridを配置

 

 

デザイナの右クリックから[コードの表示]を選択します。コードビューが表示されたら、先頭に次のImportsステートメントを追加します。

 

Imports System.Data

 

コードビューのクラス名のドロップダウンリストから[btnSearch]、メソッド名のドロップダウンリストから[Click]を選択します。btnSearch_Clickのイベントハンドラが作成されたら、リスト2のコードを追加します。

 

 

リスト2:検索ボタンのクリック時の処理 (Google1.aspx.vb)

Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click

  Dim dvResults As DataView = GoogleServices.Google.GoogleSearch(txtSearchTerm.Text)

  Dim intTotalResults As Integer = dvResults(0).Item("EstimatedTotalResultsCount")

  dgrdResults.DataSource = dvResults

  dgrdResults.DataBind()

  Dim intMaxPages As Integer = Int(intTotalResults / 10)

  If intMaxPages > 10 Then

    intMaxPages = 10

  End If

  dropPages.Items.Clear()

  For i As Integer = 1 To intMaxPages

    dropPages.Items.Add(i.ToString())

  Next

  dropPages.Visible = True

End Sub

 

同様の手順で、DropDownListからページ番号を選択したときのイベントハンドラdropPages_SelecteIndexChangedを作成したら、リスト3のコードを追加します。

 

 

リスト3:ドロップダウンリストからページ番号を選択したときの処理(Google1.aspx.vb)

Private Sub dropPages_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dropPages.SelectedIndexChanged

  Dim intNewPage As Integer = (Int32.Parse(dropPages.SelectedValue) - 1) * 10

  dgrdResults.DataSource = GoogleServices.Google.GoogleSearch(txtSearchTerm.Text, , intNewPage)

  dgrdResults.DataBind()

End Sub

 

VS.NET のツールバーから[開始]ボタンをクリックして実行します。ブラウザが起動されてWebページが表示されたら、テキストボックスに「ajax」を入力して[検索]ボタンをクリックします。検索結果がDataGridに表示されます(3)。ページングするときは、ドロップダウンリストからページ番号を選択します。「タイトル」のリンクをクリックすると新規ウィンドウが開いてサイトが表示されます。

 

図3:キーワード「ajax」を入力して検索した結果がDataGridに表示された

 

ASP.NET 徹底活用術(Part2)のホームへ戻る