Datalist ve repetaer için sayfalama uygulaması
Bu çalışmamızda projelerimizde çok sık kullandığımız ancak kendi içinde datagrid gibi bir sayfalama özelliği bulundurmayan datalist ve repeater kontrolleri için sayfalamanın nasıl yapılacağından bahsedeceğim. Ancak bu örnek başka yazılım sitelerinde okuduğunuz makalelere benzemeycektir. Türkçe sayfalarda "datalist paging" konusunda ne kadar arama yapmışsam hiç birinde codeproject.com'da bahsedilen "paging dll" den bahsedilmemiş. İnsan ister istemez düşünüyor acaba google'da "datalist paging dll"şeklinde bir aramayı kimse mi yapmadı die.
Şimdi anlatacağım konu şu linkte bu kişi tarafından hazırlanmış bir dll'in kullanımı hakkındadır. Zaten makalesinde bahsetmiş ben sadece nasıl kullanıldığı ile ilgili bilgi vereceğim.
Başlıyoruz ...
Makaleyi açtıktan sonra en tepede yer alan "download collection pager" linkindeki DLL dosyasını indiriyoruz.

Visual Studio'yu açarak yeni bir proje başlatalım ve design modunda iken toolbax paneline yüklediğimiz .dll dosyasını ekleyelim. Toolbox panelinde boş bir alana sağ tıklıyorum ve ekleyeceğim yeni alana "Sayfalama" ismini veriyorum.

Ardından tekrar panele sağ tıklıyorum bu sefer "choose items" seçeneğine tıklıyorum. Karşıma çıkan ekrandan browse butonuna tıklayarak indirmiş olduğum "CollectionPager.dll" dosyasını bilgisayarımda bularak projeme register ediyorum.


İşimizin önemli kısmını bitirdik diyebiliriz. Şimdi sayfamıza bir datalist sürükleyip bırakacağız. Ardından veritabanına bağlanıp verilerimizi çekeceğiz. Sonrasında da bahsettiğim makaledeki yönergelere uyarak veritabanından çektiğimiz dataları sayfalayacağız. Datalistin itemTemplateine bir label sürükleyip bırakıyorum.

Sayfanın kod kısmına geçip daha önceki konularda bahsettiğim şekilde verileri çekiyorum ama bu sefer verileri yazdırırken datalistin data kaynağını farklı göstereceğiz. Kodları yazmadan önce datalistin dışında dilediğiniz yerde "Collection Pager" adlı kontrolümüzü de sürükleyip sayfamıza bırakıyoruz.

Yukarıdaki son görüntü bile insana heyecan veriyor bence :) Şimdi sıra kodları yazmaya geldi. Açıklamaları yorum satırları şeklinde belirttim.
SqlConnection conn = new SqlConnection(MyConnection.GetConnSrt());
SqlCommand cmd = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
FILL_DATA();
}
}
private void FILL_DATA()
{
cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * FROM TblTest";
//sqldatadapter aracıyla verilerimizi bir datasetin içine aktarıyoruz.
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
//koleksiyon sayfalayıcımız bu datasetin içindeki tek tablodan dataları okuyacak
CollectionPager1.DataSource = ds.Tables[0].DefaultView;
//koleksiyon sayfalayıcımızın bind etmek üzere kontrol edeceği
//obje ise datalist1 objesidir.
CollectionPager1.BindToControl = DataList1;
//datalist1 objesinin data kaynağı da dolaylı yoldan
//koleksiyon sayfalayıcısının data kaynağıdır
DataList1.DataSource = CollectionPager1.DataSourcePaged;
//ve datalist bind metodu ile dataları basılır.
DataList1.DataBind();
}
Şimdi sıra son kontrolde. CollectionPaging kontrolünün özelliklerini inceleyelim. Ben sadece sayfadaki kayıt sayısının nasıl ayarlandığını göstereceğim. PageSize özelliğine vereceğimiz değer sayfada görüntülenecek kayıt sayısını verir. Diğer özellikleri sizler incelersiniz. İnanın çok geniş imkanlar veriyor bu sayfalama tekniği.

Artık çalıştıralım mı ne dersiniz :) Ve İşte son olarak sonuç görüntümüz. Bu .dll'i her kullandığınızda codeproject.com'da bu bilgiyi paylaşan ve bunu dll haline getirip herkesin faydalanmasını sağlayan adını çözemediğim e-posta adresine erişemediğim bu şahsı her zaman saygıyla analım :)

2 Mart 2009 Pazartesi akşam 20:59
Mesajınızı yazabilirsiniz
Mesajlar
zeynel22
14 Eylül 2009 Pazartesi 0:38
saolsın dostum güzel paylaşım.iyi çalışmalar
Ürfet Demirtaş
26 Mart 2010 Cuma sabah 11:47
eyvl. emre hocam...
by_arda2
30 Mayıs 2010 Pazar sabah 11:1
ellerinize sağlık.ama bunu birde vb dilinde anlatabilirmisiniz..
twiligh
16 Haziran 2010 Çarşamba akşam 21:26
eyv. hocam. ama access database kullanılırsa nasıl olur. daha çok sql kullanılıyor galiba...
Emre Kıyak
17 Haziran 2010 Perşembe 0:13
access ile de deneyebilirsin. aralarındaki farkı gözlemlemek sana kalmış :)