Skip to main content

ASP.NET e-Commerce website GridView with Product Listing

Introduction :

E-Commerce web applications are everywhere these days, and many share a common set of functionality. In this article, I will show how to use the GridView and ListView controls to build a powerful product page with many of the features found on today's e-commerce sites. We'll build a bicycle store product grid using some free clip art bicycle images. The example files are user controls which can be easily added to a page. We're only using three images here to keep the size of the sample application small.

In previously I was explained about Sending Email from Asp.net With Dynamic Content , How To Export gridview data to Excel/PDF , CSV Formates in asp.net C# ,How to print Specific Area in asp.net web page
How To- Search records or data in gridview using jQuery .

A shopping cart application would require to display the products in a multi column grid, rather than a straight down list or a table. The each item in a product grid would have a product photo thumbnail, name of the product, price (optional), as well as additional metadata like reviews, ratings, etc. This articles explains how to set up a product grid using ASP.NET ListView control and floating DIVs.
 ASP.NET ListView control is basically used to display data-bound elements, and optionally to group them. Like other databound listing controls like GridView, Repeater, DataList, etc., this control has several templates. You can bind data to the ListView using DataSourceId property connecting to an SqlDataSource or similar controls, or by assigning DataTable or DataSet to its DataSource property.
The following template properties of ListView needs to be utilized to generate the product grid.

LayoutTemplate  This is the outer countainer template.
GroupTemplate  This is the template for every product row in the grid.
GroupSeparatorTemplate  This template contains the seperator between each product row in the grid.
ItemTemplate  This template contains the controls for displaying each product item. The width of this template must be controlled to have the grid look proper.
ItemSeperatorTemplate  (Optional) If a seperator line, etc.. is required vertically between each product, then this template has to be used.


The GroupItemProperty of the ListView controls the number of columns in the display. You should take care of the width of each product grid to keep the structure of the grid intact.
The Product grid is constructed using CSS float and clear styles. The source view of this implementation is as follows:
 
    <style type="text/css">
        .productItem
        {
            width: 140px;
            float: left;
            padding: 5px;
            margin: 5px;
            text-align: center;
        }
        .groupSeparator
        {
            border-top: 1px dotted Gray;
            height: 1px;
            clear: both;
        }
        .itemSeparator
        {
            height: 180px;
            width: 1px;
            border-left: 1px dotted Gray;
            margin-top: 5px;
            margin-bottom: 5px;
            float: left;
        }
    </style>
 
    <asp:ListView runat="server" ID="listView" GroupItemCount="3">
        <LayoutTemplate>
            <div style="width: 500px;">
                <asp:PlaceHolder runat="server" ID="groupPlaceHolder" />
            </div>
        </LayoutTemplate>
        <GroupTemplate>
            <div style="clear: both;">
                <asp:PlaceHolder runat="server" ID="itemPlaceHolder" />
            </div>
        </GroupTemplate>
        <ItemTemplate>
            <div class="productItem">
                <div>
                    <img src='<%# "/Products/" + Eval("Picture") %>'
                        height="120" width="120" />
                </div>
                <div>
                    <b>
                        <%# Eval("Name") %></b></div>
                <div>
                    Price: $<%# Eval("Price") %></div>
            </div>
        </ItemTemplate>
        <ItemSeparatorTemplate>
            <div class="itemSeparator">
            </div>
        </ItemSeparatorTemplate>
        <GroupSeparatorTemplate>
            <div class="groupSeparator">
            </div>
        </GroupSeparatorTemplate>
        <EmptyDataTemplate>
        </EmptyDataTemplate>
    </asp:ListView>
The LayoutTemplate contains the outer container, which has width of 500px. The GroupTemplate contains template for the each group, which is another div with style clear:both, this allows each group to stay distinct. The ItemTemplate is the actual product template, and has a fixed width. The width of the outer container should be GroupItemCount times the width of each item + the total morgins.
Databinding of this ListView is done as it is done usually with all databound controls. The code used for this example is as follows:
        protected void Page_Load(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("Connection_String_Here");
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Products", conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            conn.Close();
 
            listView.DataSource = dt;
            listView.DataBind();
        }

Finally, when the page is rendered on the Internet Explorer, it looked like this :


 ListView Example as in Internet Explorer

More Reference about This :

http://www.codeproject.com/Articles/113261/ASP-NET-e-Commerce-GridView-with-Product-Compariso

http://www.4guysfromrolla.com/articles/122607-1.aspx#postadlink

http://www.asp.net/web-forms/tutorials/tailspin-spyworks/tailspin-spyworks-part-4




Comments

Popular posts from this blog

How to send mail asynchronously in asp.net with MailMessage

With Microsoft.NET Framework 2.0 everything is asynchronous and we can send mail also asynchronously. This features is very useful when you send lots of bulk mails like offers , Discounts , Greetings . You don’t have to wait for response from mail server and you can do other task . By using     SmtpClient . SendAsync Method (MailMessage, Object)    you need to do  System.Net.Mail has also added asynchronous support for sending email. To send asynchronously, you need need to Wire up a SendCompleted event Create the SendCompleted event Call SmtpClient.SendAsync smtpClient.send() will initiate the sending on the main/ui  thread and would block.  smtpClient.SendAsync() will pick a thread from the .NET Thread Pool and execute the method on that thread. So your main UI will not hang or block . Let's create a simple example to send mail. For sending mail asynchronously you need to create a event handler that will notify that mail success...

How to hide url parameters in asp.net

There are different ways to Hide the URL in asp.net , you can choose any one from bellow options . Previously I was Explained about the  Difference between Convert.tostring and .tostring() method Example  ,   Reasons to use Twitter Bootstrap , How to Register AJAX toolkit in web.config file in asp.net a) Using Post Method b) Using Of Session . c) URL Encoding & decoding process . d) Using Server.Transfer() instead of Response.Redirect() method (1)Use a form and POST the information. This might require additional code in source pages, but should not require logic changes in the target pages (merely change Request.QueryString to Request.Form). While POST is not impossible to muck with, it's certainly less appealing than playing with QueryString parameters. (2)Use session variables to carry information from page to page. This is likely a more substantial effort compared to (1), because you will need to take session variable checking into account...

View online files using the Google Docs Viewer

Use Google Docs Viewer for Document viewing within Browser I was looking for a way to let users see Microsoft Word Doc or PDF files online while using my application without leaving their browser without downloading files and then opening it to view with Word or PDF viewer . I was looking for some way out either via any PHP or Microsoft.NET libraries, did some googling on that; but later on I just got an idea that google already has all code written for me.. when I have any email attachment in PDF or DOC or DOCX google does it for me ..! Even while searching I can see PDFs by converting them in HTML. So I just googled it up and found that Google already has this ability that we can use Google Docs Viewer without any Google Account Login . YES that's true no Google Account login is required. It's damn simple and easy. Just pass document path as attachment as parameter and we are done. Google Docs Viewer gives us ability to embed PDF, DOC/DOCX, PPT, TIFF:...