Code to navigate Catalog products on an ASP.NET Web form
Use the following code to navigate through catalog products on an ASP.NET Web form. The code sample should be used within a Commerce Server project. For more information about creating a Commerce Server project, see Creating a Commerce Project.
<%@ Page Language="C#" Trace="False" %>
<%@ Import Namespace="Microsoft.CommerceServer.Runtime" %>
<%@ Import Namespace="Microsoft.CommerceServer.Runtime.Catalog" %>
<%@ Import Namespace="System.Data" %>
<script language="C#" >
CatalogContext catalogCtx = CommerceContext.Current.CatalogSystem;
string catalogName = @"Adventure Works Catalog";
void Page_Load(object source, EventArgs args) {
if (!IsPostBack) {
UpdateCategories();
}
}
void UpdateCategories() {
RootCategoryListing.DataSource = catalogCtx.GetCatalog(catalogName).GetRootCategories();
RootCategoryListing.DataBind();
}
void ProductListing_ItemCommand(object source, RepeaterCommandEventArgs args) {
// The product id is set as part of the LinkButtons dynamically created
// by the Repeater control.
string productId = (string)args.CommandArgument;
// Retrieve the details for the selected product from the Catalog
// System.
DataSet details =
catalogCtx.GetCatalog(catalogName).GetProduct(productId).GetProductProperties();
// The default row of the returned DataSet contains the product
// details.
DataRow product = details.Tables[0].Rows[0];
SelectedProduct.Text = @"You selected <b>" + (string)product["Name"] + "</b>";
ProductID.Text = @"Product ID: <b>" + (string)product["ProductID"] + "</b>" ;
Desc.Text = @"Description: <b>" + (string)product["Description"] + "</b>";
}
// This method is used by the nested Repeater controls used for iterating
// through the available products in a particular category.
DataSet GetProductListing(string category) {
return catalogCtx.GetCatalog(catalogName).GetCategory(category).GetProducts();
}
</script>
<html>
<head>
<link rel="stylesheet" href="../util/style.css">
<title>List Products</title>
</head>
<body>
<form >
<asp:Label
id="SelectedProduct"
Text="No product selected"
/><br/>
<asp:Label
id="ProductID"
/><br/>
<asp:Label
id="Desc"
/><br/>
<asp:Repeater
id="RootCategoryListing"
>
<HeaderTemplate>
<h2>Categories:</h2>
</HeaderTemplate>
<ItemTemplate>
<p>
<b><%# (string)((DataRowView)Container.DataItem)["CategoryName"] %></b><br/>
<asp:Repeater
id="ProductListing"
OnItemCommand="ProductListing_ItemCommand"
DataSource='<%# GetProductListing((string)((DataRowView)Container.DataItem)["CategoryName"]) %>'
>
<ItemTemplate>
<asp:LinkButton
id="SelectProductBtn"
CommandName="Select"
CommandArgument='<%# ((DataRowView)Container.DataItem)["ProductID"] %>'
>
<%# (string)((DataRowView)Container.DataItem)["Name"] %>
</asp:LinkButton>
</ItemTemplate>
<SeparatorTemplate>
,
</SeparatorTemplate>
</asp:Repeater>
</p>
</ItemTemplate>
<SeparatorTemplate>
<p/>
</SeparatorTemplate>
</asp:Repeater>
</form>
</body>
</html>
See Also
Microsoft.CommerceServer.Runtime.Catalog
Copyright © 2005 Microsoft Corporation.
All rights reserved.