<%@ 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: </font>
<asp:TextBox id="Text1"
Columns="30"
MaxLength="30"
Text="ASP.NET"
runat="server"/>
<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">
<asp:LinkButton id="PreviousButton" CommandArgument="" Font-Name="Verdana" Font-Bold="true" Font-Size="10pt"
ForeColor="white" runat="server" Text="" OnClick="PagePrevious"/>
<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...
|