Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Sem Göksu
Sem Göksu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
3 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: (baslangic baslangic datalist ekleyelim ekrana eventargs height: numeric private protected sayfalama sayfaya sayisini sender toplam ASP.NET Sem Göksu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : ASP.NET
Yayınlanma Tarihi : 24.12.2006
Okunma Sayısı : 30487
Yorum Sayısı : 2     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 19.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 19.4.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 19.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 19.4.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
DataList İle Numeric Bazlı Sıralama
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Merhaba arkadaşlar bu makalemde Datalist nesnesinde Numeric(1.2.3...) bazlı sayfalamanın nasıl yapılacağına bakacağız.

Datalist ve Repeater nesnelerin de görüntülenecek kayıt sayısının çok fazla olduğu durumlar da kayıtlarımızı sayfalama ihtiyacı duyarız. Bu bize kayıtların daha hızlı görüntülenmesini sağlar ve aynı zamanda kullanıcıya gösterilmek istenilen bilgi daha derli toplu gösterilir. Ben bu makalede sayfaları Numeric olarak listeleteceğim ve gitmek istediğimiz sayfaya tıkladığımızda o sayfaya gidebileceğiz. Örnek vermek gerekirse google’ da “sem göksu” diye arama yaptığımızda sayfaların Numeric olarak listelendiğini göreceğiz.  

Ön bilgiyi verdikten sonra makalemize başlayabiliriz. Bunun için projemize ilk olarak bir adet Datalist nesnesi ekleyelim. Datalist nesnesinde ben Northwind database’deki Customers tablosunu kullanacağım. Datalist nesnesi içerisinde de CustomerID, CompanyName ve ContactName Fieldlerini görüntüleyeceğim. Benim düzenlemiş olduğum Datalist Nesnesinin son hali aşağıdaki gibidir;

DatalistNesnesinin HTML Kodları;



< asp : DataList ID ="DataList1" runat ="server" BackColor ="White" BorderColor ="#E7E7FF"  BorderStyle ="None" BorderWidth ="1px" CellPadding ="3" Font-Names ="Verdana" Font-Size ="X-Small" GridLines ="Horizontal" RepeatLayout ="Flow">

< FooterStyle BackColor ="#B5C7DE" ForeColor ="#4A3C8C" />

< SelectedItemStyle BackColor ="#738A9C" Font-Bold ="True" ForeColor ="#F7F7F7" />

< ItemTemplate >

< table border ="0" cellpadding ="0" cellspacing ="0" style ="width: 392px">

< tr > < td style ="width: 129px; height: 19px"> < asp : Label ID ="Label3" runat ="server" Font-Bold ="True" Font-Names ="Tahoma" Font-Size ="Small" Text ="Customer ID"></ asp : Label ></ td >

< td style ="width: 17px; height: 19px">  :</td>

< td style ="width: 300px; height: 19px"> <asp:Label ID="lblCustomerID" Text=’<%# DataBinder.Eval(Container.DataItem,"CustomerID") %>’ runat="server" Font-Names="Tahoma" Font-Size="Small"></asp:Label></td> 

</ tr >

< tr > < td style ="width: 129px; height: 19px"> < asp : Label ID ="Label2" runat ="server" Font-Bold ="True" Font-Names ="Tahoma" Font-Size ="Small" Text ="Company Name"></ asp : Label ></ td > < td style ="width: 17px; height: 19px"> .</td>

< td style ="width: 300px; height: 19px"> <asp:Label ID="lblCompanyName" runat="server" Text=’<%# DataBinder.Eval(Container.DataItem,"CompanyName") %>’ Font-Names="Tahoma" Font-Size="Small"></asp:Label></td></ tr >

  < tr > < td style ="width: 129px; height: 19px"> < asp : Label ID ="Label1" runat ="server" Font-Bold ="True" Font-Names ="Tahoma" Font-Size ="Small" Text ="Contact Name"></ asp : Label ></ td >

< td style ="width: 17px; height: 19px"> :</td>

  < td style ="width: 300px; height: 19px"> <asp:Label ID="lblContactName" runat="server" Font-Names="Tahoma" Text=’<%# DataBinder.Eval(Container.DataItem,"ContactName") %>’ Font-Size="Small"></asp:Label></td></ tr >

< tr > < td style ="width: 129px; height: 19px"> </ td >

< td style ="width: 17px; height: 19px"> </ td >

< td align ="right" style ="width: 300px; height: 19px"> &nbsp; </ tr >

</ table >

</ ItemTemplate >

< AlternatingItemStyle BackColor ="#F7F7F7" />

< HeaderStyle BackColor ="#4A3C8C" Font-Bold ="True" ForeColor ="#F7F7F7" />

< ItemStyle BackColor ="#E7E7FF" ForeColor ="#4A3C8C" />

< EditItemTemplate >

</ EditItemTemplate >

</ asp : DataList >

Şimdi datalistimizi görüntüleyeceğimiz bir void yazalım.

protected string ConnectionDegiskeni()
{
        return "Data Source=.; Initial Catalog=Northwind; uid=sa; pwd="; //Connection String
}   

protected void DatayiDoldur()
{
      Baslangic = Convert.ToInt32(txtStart.Text);
      BaslangicKaydi = (Baslangic * SayfadakiKayitSayisi) - SayfadakiKayitSayisi;
      SqlConnection Cnn = new SqlConnection(ConnectionDegiskeni());  Cnn.Open();
      SqlDataAdapter Da =new SqlDataAdapter("Select * From Customers",Cnn);         

      DataSet Ds = new DataSet();         
      Da.Fill(Ds, BaslangicKaydi, SayfadakiKayitSayisi, "Customers");         
      DataList1.DataSource = Ds.Tables[0].DefaultView;         
      DataList1.DataBind();          
      Cnn.Close();     
}

Daha Sonra bu void’i Formun load’da çağıralım.

protected void Page_Load(object sender, EventArgs e)
{             
     DatayiDoldur();

Evet projemizi çalıştırdığımızda tüm verilerin ekrana geldiğini ve verilerin yavaş yüklendiğini göreceksiniz.

Evet kayıtlarımızı listeledikten sonra artık sayfalam işlemine geçebiliriz. Bunun için datalistimizin altına bir adet label alalım ve text özelliğini boşaltalım. Bu label üzerinde numeric değerleri göstereceğiz. (1 | 2 | 3 | 4 …. gibi)

Projemize bir adet textbox ekleyelim adını txtStart yapalım ve visible özelliğini false yapalım. Bu textbox içerisinde sayfa sayısını saklayacağız. Code kısmına geçip aşağıdaki değişkenleri tanımlayalım.

 private int Baslangic=1; // Görüntülenecek olan Sayfanın numarası


    private int SayfadakiKayitSayisi = 4;//Sayfada görüntülenecek olan kayıt sayısı
    private int BaslangicKaydi;//Databaseden çekilen datada başlanacak olan kaydın sayısı
    private int ToplamSayfaSayisi;//Toplam sayfa sayısı
 
    private int ToplamKayitSayisi()// Toplam kayıt sayısını geri döndüren bir fonksiyon yazarız.
    {
        SqlConnection Cnn = new SqlConnection(ConnectionDegiskeni());
        Cnn.Open();
        SqlCommand myComm =new SqlCommand("Select Count(*) From Customers", Cnn);
        int GeciciKayitSayisi = Convert.ToInt32(myComm.ExecuteScalar());
        Cnn.Close();
        return iTempRecordCount;
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        //Toplam Sayfa Sayısı Alınıyor
 
 //toplam Kayıt Sayısının Sayfadaki Kayıt sayısına göre modunu alırız. Eğer tam sonuç verirse Toplam kayıt sayısına, Sayfadaki Kayıt Sayısını bölmesi yeterli olur ancak tam sonuç vermezse sayfa sayısı 1 eksik çıkar bunu önlemek için ToplamSayfaSayisi’nı 1 arttırırız  .    
     if (ToplamKayitSayisi() % SayfadakiKayitSayisi == 0)
     {
            ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi;
        }else {
            ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi + 1;
        }
        DatayiDoldur(); // Datayı ekrana getiririz.
        if (!Page.IsPostBack) {
            // Numeric Sayfalama Bilgileri Oluşturuluyor
            int i;
            for (i = 1; i <= ToplamSayfaSayisi; i++)
            {
                Label5.Text = Label5.Text + "<a href=default.aspx?sayfa=" + i + ">" + i + "</a>|";
                //Label5 içerisine 1 den Toplam Sayfa Sayısına Kadar numeric değerler oluşturuluyor. Sayıları oluşturuyoruz ve bu sayılara link veriyoruz. Link yine aynı sayfaya gidiyor ve sayfa adında bir querystring içerisinde sayfaya ait değeri gönderiyor.
            }
            try
            {
                //oluşturulan numeric değerin gönderdiği querystring’e göre  o sayfaya gidiliyor
                Baslangic = int.Parse(Request.QueryString["sayfa"].ToString()); // burada queryden gelen değeri alıyoruz
                txtStart.Text = Baslangic.ToString();
                DatayiDoldur();//data yenileniyor
            }
            Catch //sayfa ilk açıldığında querystring boş olacağından hata vermemesi için ve ilk kayıttan başlaması için basalangic değişkenine 1 değerini atarız.
            {
                Baslangic = 1;
            }
        }
        Bilgiler();
    }
// Yaptıklarımızı daha iyi anlamak için forma 4 adet label ekleyelim ve aşağıdaki voidi yazalım.daha sonra voidimizi form_Load da çağıralım.
    protected void Bilgiler()
    {
        //Konuyu daha iyi anlamak için kullandığımız değişkenleri ekrana bastık
        lblBaslangicKaydi.Text = BaslangicKaydi.ToString();
        lblGoruntulenecekKayitSayisi.Text = SayfadakiKayitSayisi.ToString(); ;
        lblToplamKayitSayisi.Text = ToplamKayitSayisi().ToString();
        lblToplamSayfaSayisi.Text = ToplamSayfaSayisi.ToString();
    }

Numeric Sayfalama işlemini tamamladık ve artık yaptığımız sayfayı görelim (:

Evet 5 numaralı sayfayatıklayalım ve o sayfaya gidelim.

Madem Google örneğini verdik, Önceki ve sonraki butonlarınıda ekleyelim (: Sayfamıza 2 adet link buton ekleyelim ve Text özelliklerini Önceki ve Sonraki olarak belirleyelim.

protected void lblOnceki_Click(object sender, EventArgs e)    {
        // Önceki kayda gider
        if (Baslangic > 1)
        {
            Baslangic = Baslangic - 1;
            txtStart.Text = Baslangic.ToString();
            DatayiDoldur();
            Label4.Text = "";
            Bilgiler();
        }
    } 
protected void lbSonraki_Click(object sender, EventArgs e)    {
        // Sonraki kayda gider
        if (Baslangic < ToplamSayfaSayisi)
        {
            Baslangic = Baslangic + 1;
            txtStart.Text = Baslangic.ToString();
            DatayiDoldur();
            Label4.Text = "";
            Bilgiler();
        }
    }

Son kez projemizi çalıştıralım ve sonucu görelim.

Bu makalenin de sonuna geldik başka bir makalede görüşmek dileğiyle, başarılar dilerim.

Sem GÖKSU MCP | MCAD.NET [email protected]

Not: Selçuk Yavuz’un yazmış olduğu Datalist ile Sayfalama makalesi bu makaleye kaynak olmuştur. Diğer Kaynaklar; Codeproject - Paging with Repeater control in ASP.NET

Örnek Kodları indirmek içinTıklayınız

Makale:
DataList İle Numeric Bazlı Sıralama ASP.NET Sem Göksu
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor