C# Source Code dbquery03.aspx
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="C#" runat="server">

//  The following ASP.NET sample allows you to connect to to the Amazon.com Web Service
//  and retrieve XML data for a specific keyword. Binds to a data grid for display output.
//  Copyright © 2007 LCSS 

// Stores totalitems per page for each request.
int itemCount = 0;
XmlDataDocument myData = new XmlDataDocument();
public void Page_Load(Object sender, EventArgs e)
{
    if (IsPostBack)
    {
        itemCount = 0;
    }	
}

void SubmitBtn_Click(Object sender, EventArgs e)
{
    // Retrieve initial page of Amazon XML data for the selected keyword
    myData.DataSet.ReadXml("http://xml.amazon.com/onca/xml?v=1.0&t=webservices-20&dev-t=D1Z7OL4R3UKQII&KeywordSearch=" + Text1.Text + "&mode=books&type=lite&page=1&f=xml");

    if (myData.DataSet.Tables[0].Columns[0].ToString() == "ErrorMsg")
    {
        Label1.Text = "There are no results for your search";
    }
    else
    {
        // Bind to XML results
        Books.DataSource = myData.DataSet;
        Books.DataBind();

        // Update page number and PREVIOUS and NEXT links
        Label1.Text = "Results page: 1";
        NextButton.Text = "[Next]";
        NextButton.CommandArgument = "2";
        PreviousButton.Text = "";
        PreviousButton.CommandArgument = "0";
        Label2.Text = "Items: 1 - " + (itemCount - 2);
    }
}
public void PageNext (Object sender, EventArgs e)
{
    // Retrieve next page of Amazon XML data for the selected keyword
    myData.DataSet.ReadXml("http://xml.amazon.com/onca/xml?v=1.0&t=webservices-20&dev-t=D1Z7OL4R3UKQII&KeywordSearch=" + Text1.Text + "&mode=books&type=lite&page=" + NextButton.CommandArgument + "&f=xml");

    // If "ErrorMsg" returned, no more pages of data
    if (myData.DataSet.Tables[0].Columns[0].ToString() == "ErrorMsg")
    {
        Label1.Text = "No more pages for this keyword";
        NextButton.Text = "";
        NextButton.Visible = false;
    }
    else
    {
        // Bind to XML results
        Books.DataSource = myData.DataSet;
        Books.DataBind();

        // Update current page, PREVIOUS and NEXT values
        int currentPage = System.Convert.ToInt32(NextButton.CommandArgument);
        Label1.Text = "Results page: " + currentPage;
        int minItem = (currentPage * 10) - 9;
        Label2.Text = "Items: " + minItem + " - " + (minItem + (itemCount - 2) - 1);
        NextButton.CommandArgument = "" + (currentPage + 1);
        PreviousButton.Text = "[Previous]";
        PreviousButton.CommandArgument = "" + (currentPage - 1);
    }
}

public void PagePrevious (Object sender, EventArgs e)
{
    // Retrieve previous page of Amazon XML data for the selected keyword
    myData.DataSet.ReadXml("http://xml.amazon.com/onca/xml?v=1.0&t=webservices-20&dev-t=D1Z7OL4R3UKQII&KeywordSearch=" + Text1.Text + "&mode=books&type=lite&page=" + PreviousButton.CommandArgument + "&f=xml");

    // Bind to XML results
    Books.DataSource = myData.DataSet;
    Books.DataBind();
    // Update current page, PREVIOUS and NEXT values
    int currentPage = System.Convert.ToInt32(PreviousButton.CommandArgument);
    Label1.Text = "Results page: " + currentPage;
    int maxItem = currentPage * 10;
    Label2.Text = "Items: " + (maxItem - 9) + " - " + maxItem;
    NextButton.CommandArgument = "" + (currentPage + 1);
    PreviousButton.CommandArgument = "" + (currentPage - 1);
    if (currentPage == 1) PreviousButton.Text = "";
}
</script>

...HTML tags...

<form runat="server">
<font face="Verdana" size="2">Enter keyword:&nbsp;</font>
<asp:TextBox id="Text1"
    Columns="30"
    MaxLength="30"
    Text="ASP.NET"
    runat="server"/>&nbsp;
<asp:Button id="Button1"
    Text="Get Books"
    OnClick="SubmitBtn_Click"
    runat="server"/>
<p>    
<font face="arial" size="2"><b>
<table border="0" width="500" cellpadding="4" cellspacing="0" bgcolor="#009999">
<tr>
<td valign="top">
<asp:Label id="Label1" Text="" runat="server" ForeColor="white" Font-Name="Verdana" Font-Bold="true" Font-Size="10pt"/>
</td>
<td valign="top" align="right">&nbsp;&nbsp;
<asp:LinkButton id="PreviousButton"  CommandArgument="" Font-Name="Verdana" Font-Bold="true" Font-Size="10pt"
ForeColor="white" runat="server" Text="" OnClick="PagePrevious"/>&nbsp;
<asp:LinkButton id="NextButton"  CommandArgument="" Font-Name="Verdana" Font-Bold="true" Font-Size="10pt"
ForeColor="white" runat="server" Text="" OnClick="PageNext"/>
</td></tr>
</table>
</font>
<p>

<asp:DataGrid id="Books" runat="server"
BorderColor="black"
Border="0" 
BorderWidth="0"
CellPadding="3"
Width="500" 
ShowHeader="false" 
AutoGenerateColumns="false">

<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<b><font face="arial" size="2">
<a href="<%# DataBinder.Eval(Container.DataItem, "url") %>">
<%# DataBinder.Eval(Container.DataItem, "ProductName") %></a>
</b>
</font>
<P>
<img src="<%# DataBinder.Eval(Container.DataItem, "ImageUrlMedium") %>" align="left" hspace="10"><P>
<font face="arial" size="2">
<b>Released</b>: <%# DataBinder.Eval(Container.DataItem, "ReleaseDate") %><br>
<b>Manufacturer</b>: <%# DataBinder.Eval(Container.DataItem, "Manufacturer") %><p>
<b>List Price</b>: <strike><%# DataBinder.Eval(Container.DataItem, "ListPrice") %></strike><br>
<b>Amazon's Price:</b> <%# DataBinder.Eval(Container.DataItem, "OurPrice") %><br>
</font>
<P><br><br>
<hr noshade>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>

</asp:DataGrid>

<font face="arial" size="2"><b>
<table border="0" width="500" cellpadding="4" cellspacing="0" bgcolor="#009999">
<tr>
<td valign="top">
<p align="center">
<asp:Label id="Label2" Text="" runat="server" ForeColor="white" Font-Name="Verdana" Font-Bold="true" Font-Size="10pt"/>
</td>
</tr>
</table>
</font>
</form>

...HTML tags...