Tarayıcınız JavaScript! desteklememektedir.

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