Asp.Net Basit E-Ticaret Sepet Yapımı

4 yorum
Merhaba Arkadaşlar ,

Birçoğumuz E-ticaret uygulamarında bulunmuş yada bir e-ticaret sitesi yapıyoruzdur.Bu aşamada ele alacağımız noktada Session bazlı sepet yapımı olarak örneğime başlıyor olacağım.İlk olarak Product.aspx Sayfamızın Source bölümü ile başlıyor olacağım .

<%@ Page Title="" Language="C#" MasterPageFile="~/SiteMaster/Main.Master" AutoEventWireup="true" CodeBehind="Product.aspx.cs" Inherits="DuffDunnAyakkabi.SiteMaster.Product" %>
 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
 
<%@ Register Assembly="CollectionPager" Namespace="SiteUtils" TagPrefix="cc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
   
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    
    <div id="content" class="float_r">
    <asp:DataList ID="DataList1" runat="server" 
        RepeatColumns="3" RepeatDirection="Horizontal" 
            onitemcommand="DataList1_ItemCommand">
        <HeaderTemplate><h1><%#Eval("MarkaAdi"%></h1></HeaderTemplate>
    <ItemTemplate>
   <div class="product_box">
    <h3><%#Eval("UrunAdi")%></h3>
    <a href="ProductDetails.aspx?ID=<%#Eval("UrunID") %>&MrkID=<%#Eval("MarkaID") %>"><img src='<%#Eval("Resim") %>' alt="Shoes 1" /></a>
    <p>
                  Urun Adeti :  <asp:TextBox ID="txtAdet" CssClass="text-images"  ForeColor="White" Width ="50px" Text="1" runat="server"></asp:TextBox><asp:FilteredTextBoxExtender
                      ID="FilteredTextBoxExtender1" runat="server"  TargetControlID="txtAdet" FilterType="Numbers">
                  </asp:FilteredTextBoxExtender>
                </p>
     <p class="product_price"><%# String.Format("{0:C}",Eval("Fiyat"))%></p>
                <asp:LinkButton ID="lnkSepet" CommandName="sepeteat"  CommandArgument='<%#Eval("UrunID") %>' class="addtocart"  runat="server"></asp:LinkButton>
               
    <a href="ProductDetails.aspx?ID=<%#Eval("UrunID") %>&MrkID=<%#Eval("MarkaID") %>" class="detail"></a>
   </div>         
  
    </ItemTemplate>
    </asp:DataList>
    </div>
    <cc1:CollectionPager ID="CollectionPager1" runat="server" 
        BackNextLocation="Split" BackText="« Geri" FirstText="ilk" 
        LabelText="Sayfa" PageSize="9"
        LastText="Son" NextText="ileri&gt;&gt;" PagingMode="QueryString" ResultsFormat="Sayfa {0}-{1} (of {2})" 
        ShowLabel="False" MaxPages="100">
    </cc1:CollectionPager>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
    <p>
                        Sepetteki Ürün Sayısı:<strong><%= sCount.ToString() %> 
                </strong><a href="ShoppingCart.aspx">Sepete Bak</a> )
                        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
                        </asp:ToolkitScriptManager>
                        </p>
</asp:Content> 
 
 
Sayfa tasarımı basit olması amaçlı yazılmış olup asıl konumuz olan sepet 
tarafımızdaki kodlarımızı inceleyerek devam edelim.Bu Aşamada Örneği video
anlatım olarak daha önceden sizlerle paylaşmış olduğum bir uygulama içersinden 
 paylaşıyor olacağım.Bu aşamada sepet haricinde sınıfdan gelen sorular üzerine 
yazmış olduğum kod bölümlerinide faydalı olması amaçlı paylaşıyorum
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using DuffDunnAyakkabi.Model;
 
namespace DuffDunnAyakkabi.SiteMaster
{
    public partial class Product : System.Web.UI.Page
    {
        int gelenID = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
 
            if (!IsPostBack)
            {
                if (Request.QueryString["CatID"] != null)
                {
                    gelenID = Convert.ToInt32(Request.QueryString["CatID"].ToString());
                    UrunDoldur(gelenID);
                }
                else if (Request.QueryString["MarkaID"] != null)
                {
                    gelenID = Convert.ToInt32(Request.QueryString["MarkaID"].ToString());
                    MarkayaGoreDoldur(gelenID);
                }
                else if (Request.QueryString["fi1"] != null && Request.QueryString["fi2"] != null)
                {
                    string fiyat = Request.QueryString["fi1"].ToString();
                    string fiyat2 = Request.QueryString["fi2"].ToString();
                    FiyataGoreAra(Convert.ToDecimal(fiyat), Convert.ToDecimal(fiyat2));
                }
                else
                {
                    TumUrunlerGelsin();
                }
            }
            else
            {
                if (Request.QueryString["MarkaID"]!=null)
                {
                 gelenID = Convert.ToInt32(Request.QueryString["MarkaID"].ToString());
                    MarkayaGoreDoldur(gelenID);
                }
                else
                {
                TumUrunlerGelsin();
                }
               
            }
 
            //SqlDataReader rdr = cmd.ExecuteReader();
            //DataTable dt = new DataTable();
            //dt.Load(rdr);
            //CollectionPager1.DataSource = dt.DefaultView;
            //CollectionPager1.BindToControl = DataList1;
            //DataList1.DataSource = CollectionPager1.DataSourcePaged;
            //DataList1.DataBind();
            //cnn.Close();
        }
 
        private void TumUrunlerGelsin()
        {
            VeriTabanimDataContext db = new VeriTabanimDataContext();
 
 
            var urungetir = (from k in db.Uruns
                             select k).ToList();
            CollectionPager1.DataSource = urungetir;
            CollectionPager1.BindToControl = DataList1;
            DataList1.DataSource = CollectionPager1.DataSourcePaged;
            DataList1.DataBind();
        }
 
        private void MarkayaGoreDoldur(int gelenID)
        {
            VeriTabanimDataContext db = new VeriTabanimDataContext();
 
 
            var urungetir = (from k in db.Uruns
                             where k.MarkaID == gelenID
                             select k).ToList();
            CollectionPager1.DataSource = urungetir;
            CollectionPager1.BindToControl = DataList1;
            DataList1.DataSource = CollectionPager1.DataSourcePaged;
            DataList1.DataBind();
        }
 
        private void UrunDoldur(int gelenID)
        {
            VeriTabanimDataContext db = new VeriTabanimDataContext();
 
 
            var urungetir = (from k in db.Uruns
                             where k.KategoriID == gelenID
                             select k).ToList();
            CollectionPager1.DataSource = urungetir;
            CollectionPager1.BindToControl = DataList1;
            DataList1.DataSource = CollectionPager1.DataSourcePaged;
            DataList1.DataBind();
        }
 
        private void FiyataGoreAra(decimal aranan1, decimal aranan2)
        {
            VeriTabanimDataContext db = new VeriTabanimDataContext();
            var fiyatagore = (from k in db.Uruns
                              orderby k.Fiyat ascending
                              where k.Fiyat >= aranan1 && k.Fiyat <= aranan2
                              select k).ToList();
            CollectionPager1.DataSource = fiyatagore.ToList();
            CollectionPager1.BindToControl = DataList1;
            DataList1.DataSource = CollectionPager1.DataSourcePaged;
            DataList1.DataBind();
        }
        VeriTabanimDataContext db = new VeriTabanimDataContext();
        public int sCount { getset; }
        protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            // Sepet yaparken session'ı kullanıyor olacağız
            //Eger session dolu ise aynı sepet kullanmasını sağladım
            //Eger session boşşa yeni bir sepet oluşturdum
            switch (e.CommandName)
            {
                case "sepeteat":
                    {
                        TextBox txt = e.Item.FindControl("txtAdet"as TextBox;
                        if (txt != null && string.IsNullOrEmpty(txt.Text) == false)
                        {
                            List<SepettekiUrun> urunler = null;
                            int adet = Convert.ToInt32(txt.Text);
                            int id = Convert.ToInt32(e.CommandArgument.ToString());
 
                            Urun secilen = db.Uruns.SingleOrDefault(a => a.UrunID == id);
                            if (secilen != null)
                            {
                                SepettekiUrun sps = new SepettekiUrun();
                                sps.UrunID = secilen.UrunID;
                                sps.UrunAdi = secilen.UrunAdi;
                                sps.Adet = adet;
                                sps.Fiyat = (decimal)secilen.Fiyat;
                                sps.StokMiktari = (int)secilen.StokMiktari;
                                sps.Resim = secilen.Resim;
                                if (Session["Sepet"] == null)
                                {
                                    urunler = new List<SepettekiUrun>();
                                    urunler.Add(sps);
                                    Session["Sepet"] = urunler;
                                }
 
                                else
                                {
                                   bool varmi=false; 
                                    urunler = (List<SepettekiUrun>)Session["Sepet"];
                                    foreach (var item in urunler)
                                    {
                                        if (item.UrunID == secilen.UrunID)
                                        {
                                            item.Adet += 1;
                                            varmi=true;
                                        }
                                    }
                                    if (varmi == false)
                                    {
                                        urunler.Add(sps);
                                    }
                                   
                                    Session["Sepet"] = urunler;
                                 
                                }
                              
                                sCount = urunler.Count;
                                //foreach (var item in (List<SepettekiUrun>)Session["Sepet"])
                                //{
                                //    item.UrunID = sps.UrunID;
                                //    item.Adet += adet;
                                //    urunler = (List<SepettekiUrun>)Session["Sepet"];
 
                                //}
                            }
                        }
                    }
                    break;
                default:
                    break;
            }
        }
 
        public class SepettekiUrun
        {
            public int UrunID { getset; }
            public string UrunAdi { getset; }
            public decimal Fiyat { getset; }
            public int Adet { getset; }
            public string Resim { getset; }
            public int StokMiktari { getset; }
 
            public List<SepettekiUrun> SepetiTemizle()
            {
                var bosalt = new List<SepettekiUrun>();
                HttpContext.Current.Session["Sepet"] = bosalt;
                return bosalt;
            }
            public List<SepettekiUrun> UrunCikar(int urunID)
            {
                var cikart = (List<SepettekiUrun>)HttpContext.Current.Session["Sepet"];
                var secilenurun = cikart.FirstOrDefault(a => a.UrunID == urunID);
                cikart.Remove(secilenurun);
                HttpContext.Current.Session["Sepet"] = cikart;
                return cikart;
            }
        }
    }
}
 Umarım Faydalı Olur
 

4 yorum :

  1. '/SiteMaster/Main.Master' dosyası yok.
    hatası çıkıyor acil yardım lütfen

    YanıtlaSil
  2. Önceliklle kodlama esnasından evvel Solution Explorer bölümünde yer alan klasörlerinizde Main Master isimli Master Pageniz SiteMaster içinde yer alıyormu bunu kontrol edin daha sonra eğer farklı bir konumda ise dosya yolunuzu ../ gibi yada yukarda bahsi geçen /SiteMaster/Main.Master gibi yazarak doğru dosya yolu ile Master Pagenizin Yolunu tanımlayabilirsiniz

    YanıtlaSil
  3. Hocam benimde bir iki sorum olacak sayafanıza yazdım

    YanıtlaSil

Soru Görüş önerileriniz için gmail plus üzerinden + layın müsait olduğumda mutlaka yanıt dönüyor olacağım.