people

ASP.NET DataList Sayfalama (Paging)

DataList nesnesi için ASP.Net içerisinde maalesef ki entegre gelen bir sayfalama yok bunun için kendi sayfalamamızı kendimiz yapacağız .. Benim senaryom bir araba sitesi için olduğundan Sql bağlantılarını o kadar takmayın kafanıza (: CStr değişkeni de ConnectionString'tir bu nerden geldi necidir diye kafanız karışmasın ((:

Alet çantamızı anlatmakla işe başlayalım.Formun üzerinde ;

* 1 adet TextBox (sayfa hesaplamasında değişken tutmak için kullanılacağından visible false yapıp arka planda işlevsellik kazandıracağız.)

* 1 adet Label (sayfa numaralarını yazmak için kullanacağız ki bu projede ismi : Label_sirala)

* 2 adet LinkButton (sayfalar arasında ileri-geri diye gezmemizi sağlayacak buttonlar)
* Tabi ki bir adet astsolistimiz DataList (DataList1 senaryomuzda hali hazır)


İlk olarak global değişlenlerimizi tanımlayalım;
string katID = string.Empty; // Bu değişken benim senaryomda kategoriye göre listeleme olduğundan kategori ID yi getiriyor.
public int Baslangic = 1;
public int SayfadakiKayitSayisi = 6;
public int BaslangicKaydi;
public int ToplamSayfaSayisi;


Şimdi Sayfa doldurmak ve Toplam kayıt sayısını almak için iki adet method yazalım;

private void SayfaDoldur()
{
if (Baslangic != 1) Baslangic = Convert.ToInt32(TextBox1.Text);

BaslangicKaydi = (Baslangic * SayfadakiKayitSayisi) - SayfadakiKayitSayisi;

SqlDataAdapter Da = new SqlDataAdapter("Select ID,resim,fiyat,baslik From Arabalar where kategori=@katID", CStr);
Da.SelectCommand.Parameters.AddWithValue("@katID", katID);
DataSet Ds = new DataSet();
Da.Fill(Ds, BaslangicKaydi, SayfadakiKayitSayisi, "Arabalar");
DataList1.DataSource = Ds.Tables[0].DefaultView;
DataList1.DataBind();
}

private int ToplamKayitSayisi()
{

SqlCommand myComm = new SqlCommand("Select Count(*) From Arabalar where kategori=@katID", new SqlConnection(CStr));
myComm.Parameters.AddWithValue("@katID",katID);
myComm.Connection.Open();
int GeciciKayitSayisi = Convert.ToInt32(myComm.ExecuteScalar());
myComm.Connection.Close();
return GeciciKayitSayisi;

}

Şimdi gelelim en komplike kısım olan Page_Load Eventine yazacağımız kodlara ;

katID = Request.QueryString["kat"];

if (ToplamKayitSayisi() % SayfadakiKayitSayisi == 0)
{
ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi;
}
else
{
ToplamSayfaSayisi = ToplamKayitSayisi() / SayfadakiKayitSayisi + 1;
}

SayfaDoldur();

if (!Page.IsPostBack)
{

int i;

Label_sirala.Text = Label_sirala.Text + "< a href="default.aspx?sayfa=">" + i + "< /a>"; //Köşeli parantez ile a href arasındaki boşluğu silmeyi unutmayın siz (:

}


try
{


Baslangic = int.Parse(Request.QueryString["sayfa"].ToString());

TextBox1.Text = Baslangic.ToString();

SayfaDoldur();

}
catch
{

Baslangic = 1;

}
}
Sayfalar arasında ileri - geri gezmemizi sağlayacak olan LinkButtonların Click Eventlerini de yazalım;

protected void LinkButton_Geri_Click(object sender, EventArgs e)
{
if (Baslangic > 1)
{

Baslangic = Baslangic - 1;

TextBox1.Text = Baslangic.ToString();

SayfaDoldur();

Label_sirala.Text = "";

}
}

protected void LinkButton_Ileri_Click(object sender, EventArgs e)
{
if (Baslangic < baslangic =" Baslangic" text =" Baslangic.ToString();" text = "">Ve işlem bu kadar (: Umarım yardımcı olabilmişimdir kolay gelsin ..

0 yorum:

Yorum Gönder