08 December 2016

Blog Projesi 5: Makaleleri AnaSayfada Listeleme

Entity klasörünün içine bir adet Makale isimli class ekleyelim. Property’leri tanımlayalım:

public class Makale
 {
 public int MakaleID { get; set; }
 public string MakaleBaslik { get; set; }
 public string MakaleIcerik { get; set; }
 public DateTime MakaleEklenmeTarihi { get; set; }
 }

Anasayfada görüntüleyeceğimiz makaleler özet şeklinde olacağı için BlogDBContext’in içine MakaleOzetGetir ve MakaleleriGetir isimleri ile 2 metod oluşturuyoruz.

 

public static string MakaleOzetGetir(string str)
 {
if (str.Length >= 250)
 {
string[] ozet = str.Substring(0, 249).Split(' ');
 string sonOzet = "";
 for (int i = 0; i < ozet.Length - 1; i++)
 {
 sonOzet += ozet[i] + " ";
 }
 return sonOzet + "...";
 }
else
 {
 return str;
 }
 }
public static void MakaleleriGetir(Repeater rpt)
 {
 SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["WeblogCon"].
 ConnectionString);
 SqlCommand sqlcmd = new SqlCommand("select top(5) * from Makale order by MakaleEklenmeTarihi desc", sqlcon);
 List<Makale> makaleler = new List<Makale>();
 int[] sayilar= new int[10];
 sqlcon.Open();
 SqlDataReader sdr = sqlcmd.ExecuteReader();
 while (sdr.Read())
 {
 Makale m = new Makale();
 m.MakaleID = Convert.ToInt32(sdr[0]);
 m.MakaleBaslik = sdr[1].ToString();
 m.MakaleIcerik = BlogDBContext.MakaleOzetGetir(sdr[2].ToString());
 m.MakaleEklenmeTarihi = Convert.ToDateTime(sdr[3]);
 makaleler.Add(m);
}
 sqlcon.Close();
 rpt.DataSource = makaleler;
 rpt.DataBind();
 }

 

Default.aspx sayfamıza gidip bir adet Repeater oluşturalım. (rptMakaleler) Item template ve tasarımını düzenleyelim. Kod kısmına yazalım:

protected void Page_Load(object sender, EventArgs e)
 {
 BlogDBContext.MakaleleriGetir(rptMakaleler);
 }

Source kısmı aşağıdaki gibi olacak:

<asp:Repeater ID="rptMakaleler" runat="server">
 <ItemTemplate>
 <div class="post">
 <h2 class="title"><a href="#"><%#Eval("MakaleBaslik")%></a></h2>
 <p class="meta"><span class="date"><%#Eval("MakaleEklenmeTarihi")%></span><span class="posted">Yazar: <a href="#">Admin</a></span></p>
 <div style="clear: both;">&nbsp;</div>
 <div class="entry">
 <p><%#Eval("MakaleIcerik")%></p>
 <p class="links"><a href="#">Devamını Oku</a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href="#">Yorumlar</a></p>
 </div>
 </div></ItemTemplate>
 </asp:Repeater>

Buraya kadar anasayfada 5 adet makale listelettik. Devamında makale başlıklarına tıklandığında makale sayfalarını açma işlemi yer alacak.

Comments

  1. sqlcon.Open();

    Sunucuyla bağlantı kurulurken ağ ile ilgili veya örneğe özel bir hata oluştu. Sunucu bulunamadı veya sunucuya erişilemiyor. Örnek adının doğru olduğunu ve SQL Server’ın uzak bağlantılara izin verdiğini doğrulayın. (provider: Named Pipes Provider, error: 40 – SQL Server için bağlantı açılamadı)

    Şurda hata verdi. Nasıl çözebilirim

  2. burada veritabanından 5 makale çektik sayfalama yapmadık. repeater ile sayfalama yapmak için collectionpager.dll kullanabilirsiniz.

  3. Ahmet KAYA says:

    repeater ile sayfa listeleme işlemlerini nasıl yaptınız?Sonraki linkine basıldıgında repeater bu linkle alakalımı?

  4. Ahmet KAYA says:

    repeaterda sayfalama olayını nasıl yaptınız peki ilk 5 makaleden sonra ikinci ve diğer sayfalardaki listeleme olaylarını