Tarayıcınız JavaScript! desteklememektedir.

Asp.Net Ile Seçilen Kategoriye Göre Listeleme

Asp.Net Ile Seçilen Kategoriye Göre Listeleme

Merhaba Arkadaslar,

Bugün sizlere seçilen kategoriye göre ürünleri listeme olayini anlatacagim. Bu makalemde kullandigim nesneler:

SqlConnection – SqlDataAdapter – SqlCommand – Eval – QueryString – Datalist  

Bu nesneler yardimiyla bu programi yazacagim.

1.Adim Islemler adinda class olusturup bu class da veri tabani islemlerimizi yapacagiz

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data; //Sql islemlerini yapabilmemiz için
using System.Data.SqlClient;// bu iki kütüphaneyi ekliyoruz

public class Islemler
{
    string sorgu; //sürekli kullanacagimiz nesneleri global alanda tanimliyoruz
    SqlDataAdapter adp;
    SqlCommand cmd;
    public int k_id;

    private SqlConnection Baglan()//sql server a baglanmak için Baglan() metodunu olusturuyoruz
    {
        SqlConnection conn = new SqlConnection("server=BINNAZ\\SQLEXPRESS;database=deneme;trusted_connection=true;");//baglanti adresimizi yaziyoruz
        conn.Open();//baglantiyi açalim
        return conn; // baglantiyi gönderelim
    }

    public DataTable Urunler()// tüm ürünleri göstermek için ürünler adindaki metodumuzu olusturduk
    {
        sorgu = "select * from Urunler";
        adp = new SqlDataAdapter(sorgu, Baglan());
        DataTable dt = new DataTable();
        adp.Fill(dt); // DataTable türündeki dt nin içini sorgudan gelen degerle doldurdum
        Baglan().Close(); // baglantiyi kapattik
        return dt; // geriye dt yi gönderdik
    }

    public DataTable Kategoriler() // kategorileri listelemek için olusturmus oldugum metod
    {
        sorgu = "select * from Kategoriler";
        adp = new SqlDataAdapter(sorgu, Baglan());
        DataTable dt = new DataTable();
        adp.Fill(dt); // DataTable türündeki dt nin içini sorgudan gelen degerle doldurdum
        Baglan().Close(); // baglantiyi kapattik
        return dt; // geriye dt yi gönderdik
    }

    public DataTable ListenecekUrunler(int k_id) // kategoriye göre ürünleri getirmek için olusturdugum metod int türünde k_id adinda bir parametre aliyor
    {
        sorgu = string.Format("select * from Urunler where KategoriID in(select KategoriID from Kategoriler where KategoriID={0})", k_id); // sorgumuza k_id yi veriyoruz ki seçtigimiz kategoriye göre verileri çeksin
        adp = new SqlDataAdapter(sorgu, Baglan());
        DataTable dtUrun = new DataTable();
        adp.Fill(dtUrun); // gelen degerle DataTable türündeki dtUru'ün içini doldurduk
        Baglan().Close(); // baglantiyi kapattik
        return dtUrun; // geriye kategoriye göre seçtigimiz bilgileri gönderdik
    }

    public int UrunSayisi(int i) // ürünlerin adedini göstermek için metod olusturdum int türünde i parametresini verdim çünkü parametreden gelen degere göre ürün adedini belirleyecegim
    {
        if (i==0) // eger i'nin degeri 0 ise
        {
            sorgu = "select count(*) from Urunler"; // bu sorguyu çalistir        }
        else if(i==1) // eger 0 degil 1 ise
        {
            sorgu = string.Format("select count(*) from Urunler where KategoriID={0}", k_id);// bu sorguyu çalistir bu sorguda da kategori id yi (k_id) verelim ki seçtigimiz kategorinin adedini getirsin
        }
        
        cmd = new SqlCommand(sorgu, Baglan());
        int adet=(int)cmd.ExecuteScalar(); // gelen deger tek oldugu için ExecuteScalar kullandim.ExecuteScalar object türünde deger dönderdigi için ben bunu (int) bu sekilde int türüne dönderip adet nesnesinin içine attim
        Baglan().Close();// baglantiyi kapattik
        return adet; // geriye gelen degeri gönderdim
    }

}

 

2.Adim Sayfa yüklendiginde ve butona tiklandiginda çalisacak olan kodlarimizi yazalim

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data; // Sql islemlerini yapabilmemiz için
using System.Data.SqlClient; // bu iki kütüphaneyi ekliyoruz

public partial class _Default : System.Web.UI.Page
{
    Islemler islem = new Islemler(); // Islemler classindan islem adinda nesne olusturuyoruz. Çünkü Islemler classinin içindeki parametlere ulasabilmek için nesne türetmemiz gerekiyor

    protected void Page_Load(object sender, EventArgs e)
    {
        DataTable dtKategoriler = islem.Kategoriler(); // islem nesnesinden Kategoriler() metodunu çagirdim ve geriye DataTable türünden deger dönderdigi için dtKategorilerin içine attim
        dtlstKategori.DataSource = dtKategoriler; // datalistimizin (dtlstKategori) içine ekledim
        dtlstKategori.DataBind();// datalistin (dtlstKategori) içini doldurdum

        DataTable dtUrunler = islem.Urunler(); // islem nesnesinden Urunler() metodunu çagirdim ve geriye DataTable türünden deger dönderdigi için dtUrunler içine attim
        dtlstUrunler.DataSource = dtUrunler; // datalistimizin (dtlstUrunler) içine ekledim
        dtlstUrunler.DataBind();// datalistin (dtlstUrunler) içini doldurdum
        lblAdet.Text = islem.UrunSayisi(0).ToString(); // islem nesnesinden UrunSayisi() metodunu çagirdim ve 'i' parametresini aldigi için bende 0 degerini verdim.Çünkü UrunSayisi metoduna 0 degerini gönderirsem tüm ürünleri listeyecekti bende sayfa yüklendiginde (Page_Load) tüm ürünleri görmek için verdim.
    }

    protected void lnkKategori_Click(object sender, EventArgs e) // kategorilerden herhangi birine tiklandiginda
    {
        int k_id = Convert.ToInt32(Request.QueryString["k_id"]); // QueryString ile göndermis oldugum kategori id (k_id) yi int türündeki k_id degiskenine attim.QueryString geriye string deger gönderdigi için int türüne çevirdim yani Convert ettim.
        islem.k_id = k_id; // sonra gelen degeri Islemler classina gönderdim
        lblAdet.Text = islem.UrunSayisi(1).ToString(); // ürün sayisini kategoriye göre yapmasini istedigimiz için UrunSayisi metodu aldigi parametre degerini 1 yaptim bu sayede UrunSayisi metodunda i degerini 1 gönderdim ve if sorgusunda i==1 olan sorguyu çalistirip istedigimiz ürünün adedini listedik
        DataTable dtlisteurun = islem.ListenecekUrunler(k_id); // sonra da ListenecekUrunler metoduna k_id yi verdim ve dtlisteurun içine attim
        dtlstUrunler.DataSource = dtlisteurun; // datalistin içine gönderdim
        dtlstUrunler.DataBind();// ve gönderdigim degerle de içini doldurdum
    }

    protected void lnkTumUrunler_Click(object sender, EventArgs e) // Tüm ürünlere tiklandiginda
    {    
        Response.Redirect("Default.aspx"); // sayfayi tekrar yükleyip Page_Load olmasini sagladim bu sayede program Page_Load a gitti ve içindeki kodlari çalistirdi. Tüm ürünler görüntülenmis oldu
    }
}

 

3.Adim Tasarim kisminda gelen degerleri yazdirmak için Eval kullanacagim

<body>
    <form id="form1" runat="server">
        <div id="menu">
             <h2>Kategoriler</h2>
            <asp:LinkButton ID="lnkTumUrunler" CssClass="kategori" runat="server" OnClick="lnkTumUrunler_Click">Tüm Ürünler</asp:LinkButton>         
            <asp:DataList ID="dtlstKategori" runat="server">
                <ItemTemplate>                   
                    <asp:LinkButton ID="lnkKategori" CssClass="kategori" runat="server" PostBackUrl='<%# string.Format("~/Default.aspx?k_id={0}", Eval("KategoriID")) %>' OnClick="lnkKategori_Click"><%# Eval("KategoriAd") %><!-- Kategori adini Eval yardimi ile LinkButton'un text'ine yazdirdim --></asp:LinkButton><!-- LinkButton ile kategorileri olusturdum ve PostBackUrl degerine Kategoriid yi QueryString ve Eval kullanarak gönderdim -->
                </ItemTemplate>
            </asp:DataList>
        </div>

        <div id="urunler">
             <h2>Ürünler</h2>  
            <label style="font-size:18px; font-weight:bold;">Ürün Sayisi : </label>
            <asp:Label ID="lblAdet" runat="server" Text="" Font-Bold="true" Font-Size="Large"></asp:Label><br /><br />
      
            <asp:DataList ID="dtlstUrunler" runat="server">
                <ItemTemplate>
                    <label>Ürün Adi :</label>
                    <b><%# Eval("Urun") %></b> <!-- Eval kullanarak ürün adini yazdirdim -->
                    <br />
                    <label>Ürün Fiyati :</label><b><%# Eval("Fiyat") %> TL</b><br /> <!-- Eval kullanarak ürünün fiyatini yazdirdim -->
                    <br />
                </ItemTemplate>
            </asp:DataList>
        </div>

    </form>
</body>

Ve Son olarak ekran çiktilarina bakalim

Bu sayfa yüklendiginde olan görüntü:

Bu ‘Telefon’ kategorisine tikladigimda çikan sonuç:

Bu da ‘Bilgisayar’ kategorisine tikladigimda çikan görüntü:

Evet arkadaslar programimiz basariyla sonuçlanmistir. Eger akliniza takilan bir sey veya sormak istediginiz soru varsa yorum olarak atabilirsiniz. Elimden geldigi kadariyla yardimci olurum.

Iyi Çalismalar

Bilgi Paylastikça Çogalir



Bu Makaleye Yapılan Yorum Sayısı : 0

Sende Yaz

Aşağıdaki bölümleri doldurarak bu makaleye yorum yapabilirsin.