2) Verileri kaçıncıdan itibaren alacağız. Bu ikisini hazırladıktan sonra datalistimiz numeric olarak sıralanacak. Şimdi hemen ilk kısım ile ilgili metodumuzu hazırlayalım.
publicstring Label_İsle()
{
string label="";
int toplam;
OleDbConnection con = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~\\App_Data\\db.mdb"));
OleDbCommand com = new OleDbCommand("select count(*) from users", con);
con.Open();
toplam = Convert.ToInt16(com.ExecuteScalar());
con.Close();
if (toplam % 5 != 0)
toplam = toplam/5 + 1;
for (int i = 1; i <= toplam; i++)
{
label += "<a href=default.aspx?sayfa=" + i + ">" + i + "</a> ";
}
return label;
}
Metodumuzu hemen açıklayalım. Öncelikle veritabanımıza bağlantımızı sağlayacak olan kodları yazdık. Veritabanımızda toplam kaç kayıt var bunu bulduk ve toplam ismindeki değişkenimize bu değeri attık. Biz DataListimizi 5erli şekilde sıralayacağımız için veritabanımızdan gelen toplam veriyi 5?e göre modunu almalıyız. Sonuç 0 çıkarsa sorun yok ama sıfırdan farklı çıkarsa bu sefer toplama 1 eklemeliyiz. Daha sonra artık elimizde toplam değişkeni olacak. Bunu döngüde yerine yazıp string değişken olan label?e yazdırıyoruz. Yazdırırkende dikkat ettiyseniz href=default.aspx?sayfa dedik. Yani tıklandığında parametre gönderecek. Biz bu parametreyi daha sonra birazdan yazacağımız metoda yollayacağız. Oradanda bize yeni veriler gelecek.
Şimdi diğer metodumuzu hazırlayalım ve açıklayalım.
publicDataSet DataList_Doldur(int baslangic)
{
baslangic = baslangic * 5 - 5;
if (baslangic == 0)
baslangic = 1;
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~\\App_Data\\db.mdb"));
OleDbDataAdapter adap = new OleDbDataAdapter("select * from users", con);
DataSet ds;
ds = new DataSet();
adap.Fill(ds,baslangic, 5, "tablo");
return ds;
}
Bu metıdumuz gördüğünüz gibi 1 parametre alan bir metot. Ve bize dönüşü ise datalist. Aslında bu metod diğerine nazaran çok daha basit. Almış olduğumuz parametreyi öncelikle 5 ile çarpıp çıkarıyoruz. Sebebide şudur. Örneğin 1 ile 5 arasındaki veriler için (1*5-5) kullanmalıyızki sonuç 0 çıksın yani 0dan 5e kadar veya parametremiz 2 gelmiş ise (2*5-5) sonuç 5 olacaktır 5ten itibaren sonraki 5 veriyi göster şeklinde. Eğer parametre 0 gelmişse o 1 olmak zorundadır. Buradaki can alıcı kod şudur.
adap.Fill(ds,baslangic, 5, "tablo");
Bunun anlamı baslangic değerinden itibaren 5 veriyi al datasete at demektir. Bu aşamadan sonra artık elimizde datasetimiz mevcut. Bunu sadece dataliste bağlamak kaldı.
Form Load
Formumuzun load olayında iki durum söz konusudur. Birincisi loada parametre düşmesi olayıdır. Diğeri ise parametre düşmemesi olayıdır. Parametre düşmüşse veya düşmemişse birinci metodumuz mutlaka kullanılacak. Çünkü datalistin altındaki numaralar yazılmak zorunda. Eğer parametre null ise ikinci metodumuza 1 değerini göndermeliyiz. Parametrenin null olduğu durum sayfanın ilk kez açılmış olmasıdır ve dolayısıyla ikinci metoda 1 değerini yollamalıyız. Eğer parametre almış ise buda ikinci olasıktır bu sefer 1 değerini değil bu aldığı parametreyi göndermeliyiz. Aşağıdaki gibi kodları inceleyebilirsiniz.
protected void Page_Load(object sender, EventArgs e)
{
My_Class a = new My_Class();
if (Request.Params["sayfa"] == null)
{
Label1.Text = a.Label_İsle();
DataList1.DataSource = a.DataList_Doldur(1).Tables["tablo"];
DataList1.DataBind();
}
else {
Label1.Text = a.Label_İsle();
DataList1.DataSource = a.DataList_Doldur(Convert.ToInt16(Request.Params["sayfa"])).Tables["tablo"];
DataList1.DataBind();
}
}
Özet ile toparlamak gerekirse DataList?imizi numeric sıralamak için iki metod hazırladık. Bunlardan birincisi numaraları yazdırmaya yaradı diğeri ise DataList?in içindeki verileri yeniledi. Bu metodlarıda sayfamızın load eventinde kullandık.
Umarım yararlı olmuştur. Makale geçen uygulamayı indirmek için tıklayın.
.Net ile kalın J