09 December 2016

Blog Projesi 4: Kategorileri Veritabanından Çekme

Daha önce oluşturmuş olduğumuz Weblog isimli veritabanımızda Kategori tablomuza Kategorilerimizi ekleyelim. Uygulama kısmında bu kategorileri veritabanından çekip sidebarda listeleyeceğiz. Bunun için önce MasterPage’i açalım. Kategorileri getireceğimiz kısma bir adet repeater ekleyelim ve id’sine rptKategoriler yazalım.

<asp:Repeater ID="rptKategoriler" runat="server">
 <ItemTemplate>
 <li><a href="#"></a></li>
 </ItemTemplate>
 </asp:Repeater>

Bağlantımızı gerçekleştirdikten sonra bu kısma Eval’le Kategori başlıklarını getireceğiz.

Entity klasörümüzün içinde bir adet Kategori isimli class tanımlayalım ve property’leri yazalım.

public class Kategori
 {
 public int KategoriID { get; set; }
 public string KategoriAdi { get; set; }
 public string KategoriAciklama { get; set; }
 }

Facade klasörümüzün içinde bir adet BlogDBContext.cs isimli class oluşturalım. Burada veritabanı ile bağlantımızı ve veri çekmemizi sağlayan metodlar yer alacaktır. Veritabanına bağlanıp Kategori verilerini çekebileceğimiz bir metod yazalım.

public static void KategoriGetir(Repeater r)
 {
 SqlConnection sqlcon = new SqlConnection(ConfigurationManager.
ConnectionStrings["WeblogCon"].ConnectionString);
 SqlCommand sqlcmd = new SqlCommand("SELECT * from Kategori", sqlcon);
 if (sqlcon.State == ConnectionState.Closed)
 sqlcon.Open();
 SqlDataReader sdr = sqlcmd.ExecuteReader();
 r.DataSource = sdr;
 r.DataBind();
 if (sqlcon.State == ConnectionState.Open)
 sqlcon.Close();
}

 

Kategorileri getirmek için gerekli olan metodu yazıp parametre olarak bir Repeater verdik. Sadece Repeater için bu metodu kullanabiliriz. Site1.Master kod kısmına yazalım:

protected void Page_Load(object sender, EventArgs e)
 {
 BlogDBContext.KategoriGetir(rptKategoriler);
 }

Sıra geldi daha önce oluşturduğumuz Repeater’in içerisine Kategori başlığını getirmeye:

<ul>
 <asp:Repeater ID="rptKategoriler" runat="server">
 <ItemTemplate>
 <li><a href="#" title='<%#Eval("KategoriAciklama") %>'><%#Eval("KategoriAdi") %></a></li>
 </ItemTemplate>
 </asp:Repeater>
 </ul>

Blog yazılımı: kategoriler
Kategorileri veritabanından çektik. Tıklandığında igili kategorilerin yazılarını sıralama işlemi sonraki notlarımda yer alacaktır.

Comments

  1. Merhabalar,
    DAL isminde klasör oluşturup belirttiğiniz kodları sınıflara yazdım .masterpage.cs içindeki kodu yazdığımda BlogDBContext isimli sınıfı tanımıyor bunda hata veriyor.Ne yapmalıyım?

  2. Kenan says:

    r.DataBind();
    r.DataSource = sdr;
    bu iki satırda şu şekilde hata alıyorum.
    System.NullReferenceException: Object reference not set to an instance of an object.

  3. Kenan says:

    r.DataBind();
    r.DataSource = sdr; bu iki satirda şu şekilde hata alıyorum “System.NullReferenceException: Object reference not set to an instance of an object.”

  4. Merhaba hocam
    Şimdi kategorileri çektik repearter ile listeledik ama şimdi tıkladığında o kategoriye ait yazıları bu kodlar getitiyormu href ile nasıl getirces??

  5. Hüseyin says:

    hocam sql cümlesine parametre eklediğimizde nasıl yapabiliriz. Yani kategori id si 5 olan kayıtlar gelsin gibi

  6. ömer gültekin says:

    Teşekkür ederim gayet güzel ve anlaşılır olmuş,
    elinize sağlık