Asp.Net Gridview Paging

Posted by

Asp.Net Gridview Paging

Bu yazımda Asp.Net ile gridview kontrolü için sayfalama nasıl yapılır, neler gereklidir ondan bahsetmeye çalışacağım.

Örnek vermek gerekirse, tablonuzda 5 bin adet veri var diyelim bu verileri sıralı ve sınırlı bir şekilde göstermemiz gerekiyor. Çünkü 5 bin veriyi göstermeye kalkarsak eğer sayfa yüklenmesi ve açılması, verilerin gelmesi biraz bekletecektir bizi. Haliyle bu yüzden sayfalama(paging) ihtiyacı oluşur.

Peki verilerimizi çektik ama Gridview kontrolü için sayfalamayı nasıl yapabiliriz?

Bunu yapabilmek için hazır kontroller de bulunur, gridview’in kendi özelliklerinde de mevcuttur ya da kendimiz custom olarak bir sayfalama yapabiliriz.

Bu örnekte gridview kontrolünün özelliklerinde mevcut olan paging özelliğinden bahsedeceğim.

Öncelikle bir gridview kontrolü sayfamıza ekledik aşağıda görüldüğü gibi.


<asp:GridView ID="gvProducts" OnPageIndexChanging="gvProducts_PageIndexChanging"
AllowPaging="true" PageSize="10" runat="server">
<PagerSettings Mode="NumericFirstLast" FirstPageText="İlk" LastPageText="Son" />
</asp:GridView>

Kısaca Gridview’de sayfalama için kullandığımız özelliklerin açıklamasını yapacağım.

AllowPaging özelliği ile sayfalamanın  yapılıp yapılmayacağı bilgisini giriyoruz. True ise sayfalama yapılacaktır. False ise yapılmayacaktır.

PageSize özelliği ile de sayfamızda görüntülenecek verilerin sayısını giriyoruz. Yani 5 bin verimiz var PageSize özelliğine 10 girdiğimizde bu veriler için

toplam 500 sayfa gözükecektir.

Şimdi sıra geldi göstermek istediğimiz verileri getiren kodlarımızı yazmaya;

Ben bunun için bir adet metod oluşturdum. Bu metod bize DataTable olarak geri dönüyor. Oluşturulan bu metod içinde veritabanımızdaki ilgili tablomuzdan veriler çekilip bir DataTable’a aktarılıyor. Daha sonra ise bu metod PageLoad kısmında çağrılıp gridview kontrolünün DataSource‘una atanıyor. Bu işlemden sonra da gridview’in DataBind() metodu ile veriler kontrole bind ediliyor. Bind etmediğimiz takdirde verilerimiz gözükmeyecektir.


protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// gvProducts Gridview'inin DataSource'une GetProducts() metodu ile
// çektiğimiz veriler atanır.
gvProducts.DataSource = GetProducts();

// DataBind() metodu ile de gridview'e bind edilir.
// Bu metodu yazmazsak verilerimiz gözükmez!
gvProducts.DataBind();
}
}

Ürünler tablomuzdan verilerin çekildiği geri dönüş değeri olarak DataTable dönen metodumuz:


private DataTable GetProducts()
{
// connection stringimiz yazılır.
string strBaglanti = @"Data Source=SunucuAdi;Initial Catalog=DbAdi;User ID=KullaniciAdi;Password=Sifre;";

// sqlconnection kodumuz oluşturulur.
SqlConnection baglanti = new SqlConnection(strBaglanti);

// sql bağlantımız açık değil ise bağlantı açılması sağlanır.
if (baglanti.State != ConnectionState.Open)
baglanti.Open();

// sql komutumuz yazılır.
string strKomut = @"SELECT * FROM [dbo].[Products]";

// Verilerin datatable da tutulmasını sağlayacağımız için bir datatable oluşturulur.
DataTable dt = new DataTable();

// SqlDataAdapter kodumuz oluşturulur
// buna sql komutumuz ve sql bağlantımız girilir.
SqlDataAdapter da = new SqlDataAdapter(strKomut, baglanti);

// DataAdapter Fill metodu ile de veriler DataTable'a aktarılır.
da.Fill(dt);

// sql bağlantımız kapalı değil ise kapanır.
if (baglanti.State != ConnectionState.Closed)
baglanti.Close();

// metodumuz datatable olarak geri döndüğü için return değerine oluşturduğumuz
// datatable nesnesi verilir.
return dt;
}

Gridview’imizin OnPageIndexChanging eventında ise aşağıdaki kodları yazmamız gerekiyor.


protected void gvProducts_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
// Gridview'in PageIndexChanging Eventında grid'in PageIndex'ine seçilen
// sayfanın numarası atanır.
gvProducts.PageIndex = e.NewPageIndex;

// Tekrar kayıtların gridview'e aktarılması sağlanır.
gvProducts.DataSource = GetProducts();
gvProducts.DataBind();
}

Bu kısımda da PageIndex’e seçilen sayfanın numara ataması yapılır ve kayıtlar tekrar çekilerek Gridview kontrolünde gösterilir.

Gridview ile Paging işlemi bu şekilde yapılabilir.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir