Solved

Displaying products with category grouping in DataList

Posted on 2008-10-09
1
504 Views
Last Modified: 2010-05-18
I am trying to display a list of products under each subcategory on a main category page of an ecommerce app. The app uses the DataList control because it needs to be multiple columns. The page was originally written to show a subcategory repeater control with a list of subcategory links, but will all the products for all those subcategories displayed in grid like format underneath. I am trying to change it so that it will be like this, only with 3 columns for product display.
Main Category
SubCategory 1
Product 1     Product 2   Product 3

SubCategory 2
Product 1     Product 2   Product 3
and so on.
I need to leave some of the page code alone when it gets to the grid display pf products, but just want that to be repeated for each category.

Here is what I have so far:
 protected void BindSubCategories()
    {
        CategoryCollection allCategories = CategoryDataSource.LoadForParent(this.CategoryId, true);
        foreach (Category category in allCategories)      
        {
                ProductList.DataSource = ProductDataSource.NarrowSearch("", category.CategoryId, 0, 0, 0, "");
                ProductList.DataBind();
        }
    }


----   this.CategoryId is the main category
category.CategoryId is for each sub category

Later on the code  has already in it for subcategories:
public class SubCategoryData
    {
        private int _CategoryId;
        private string _Name;
        private int _ProductCount;
        private string _NavigateUrl;
        public int CategoryId { get { return _CategoryId; } }
        public string Name { get { return _Name; } }
        public int ProductCount { get { return _ProductCount; } }
        public string NavigateUrl { get { return _NavigateUrl; } }
        public SubCategoryData(int categoryId, string name, string navigateUrl, int productCount)
        {
            _CategoryId = categoryId;
           _Name = name;
            _NavigateUrl = navigateUrl;
            _ProductCount = productCount;
        }
    }

How do I get the grid to repeat under a label for each subcategory?

Here is how it is displayed in the .ascx control- I've added the label for SubCategoryName

<ContentTemplate>
        <asp:PlaceHolder ID="CategoryHeaderPanel" runat="server" EnableViewState="false">
            <uc:CategoryBreadCrumbs id="CategoryBreadCrumbs1" runat="server" HideLastNode="True" />
            <div class="pageHeader">
                <h1><asp:Localize ID="Caption" runat="server" EnableViewState="False"></asp:Localize></h1>
            </div>
            </asp:PlaceHolder>
            <asp:PlaceHolder ID="SubCategoryPanel" runat="server" EnableViewState="false">
        <!-- Top Bar -->
        <asp:Label ID="SubCategoryName" runat="server"></asp:Label>
        <div class="catalogWrapper">
            <asp:DataList ID="ProductList" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" Width="100%"
                OnItemDataBound="ProductList_ItemDataBound" DataKeyField="ProductId" CssClass="catalog" EnableViewState="true" HorizontalAlign="left">
                <ItemStyle HorizontalAlign="center" VerticalAlign="middle" Width="33%" CssClass="tableNode" />
                <ItemTemplate>
                    <asp:PlaceHolder ID="phItemTemplate1" runat="server"></asp:PlaceHolder>
                    <uc:ProductPrice ID="Price" runat="server" Product='<%#Container.DataItem%>' />
                    <asp:PlaceHolder ID="phItemTemplate2" runat="server"></asp:PlaceHolder>
                    <div id="QuantityPanel" runat="Server">
                        <asp:Label ID="QuantityLabel" runat="server" Text="Quantity:"></asp:Label>&nbsp;<asp:TextBox ID="Quantity" runat="server" Text="" MaxLength="4" Columns="3"></asp:TextBox>
                        <asp:HiddenField ID="HiddenProductId" runat="server" Value='<%#Eval("ProductId")%>' />
                    </div>
                </ItemTemplate>
                <SeparatorTemplate>&nbsp;</SeparatorTemplate>
                <SeparatorStyle CssClass="separator" Width="1" />                
            </asp:DataList><br clear="all" />
            <div align="center">
                <asp:Button ID="MultipleAddToBasketButton" runat="server" Text="Add to Basket" OnClick="MultipleAddToBasketButton_Click" ToolTip="Fill in the quantity and Click this to add multiple products to baskt." />      
            </div>
       </div>
       </asp:PlaceHolder>      
    </ContentTemplate>
0
Comment
Question by:jmestep
1 Comment
 

Accepted Solution

by:
jmestep earned 0 total points
ID: 22795688
I found a partial solution- turning back on some of the view state and using a FindControl. Someone fixed it for me, so I don't understand it all yet.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Asp/Net Validation date Issue 9 52
Remove a text string from the end of another string 5 29
Paging GridView 7 48
Turn on intranet settings 1 36
This article discusses the ASP.NET AJAX ModalPopupExtender control. In this article we will show how to use the ModalPopupExtender control, how to display/show/call the ASP.NET AJAX ModalPopupExtender control from javascript, how to show/display/cal…
Today is the age of broadband.  More and more people are going this route determined to experience the web and it’s multitude of services as quickly and painlessly as possible. Coupled with the move to broadband, people are experiencing the web via …
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

937 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

5 Experts available now in Live!

Get 1:1 Help Now