Anasayfa / Yazılım / ASP.NET / DataSet Kullanımında Sayfalama Yapmak

DataSet Kullanımında Sayfalama Yapmak

DataSet uygulamalarına devam ediyorum. Bu uygulamaya geçmeden önce aşağıdaki yazıyı okuyunuz.

http://www.ismailgursoy.com.tr/dataset-kullanimi/

Daha önceden GridView kontrolümüz için Paging işlemi yani sayfalama işlemi yapmıştık. Şimdi DataSet ile beraber kullanımında da bu özelliği uygulayalım. GridView nesnemiz için bir SqlDataAdapter’e bağlama aşamasında sayfalama yapmak için iki basit adım var. Öncelikle, GridView kontrolümüzün AllowPaging özelliğini True yapmak. Daha sonra PageSize özelliğine bir değer atamak. Bu değer her sayfada kaç veri kaydının gösterileceğini belirler. Şimdi web formumuzda design bölümüne geçiyoruz ve GridView kontrolümüzü seçiyoruz. Sonra sağdaki alandan değerlerimizi aşağıdaki gibi ayarlıyoruz.

AllowPaging : True
PageSize : 3

Sayfalama olmasına izin veriyorum, her sayfada da 3 veri kaydı olsun istiyorum. (Normalde AllowPaging True olunda PageSize otomatik olarak 10 kabul edilir) Bunu kod tarafında da yapabilirsiniz, kodları aşağıdaki gibi :

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>





    DataSet Örnek


    

DataSet Örnek

Daha sonra GridView kontrolüm seçili iken sağ tarafta yıldırım işatine tıklıyorum ve ilgili eventleri listeliyorum. Buradan, PageIndexChanging eventine çift tıklıyorum ve otomatikmen code behind tarafında event handler oluşuyor.

Daha sonra oluşan event altında aşağıdaki kodları yazıyoruz.

 protected void GVKontrol_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //Sayfalama kodlarım
        int yeniSayfaIndex = e.NewPageIndex;
        GVKontrol.PageIndex = yeniSayfaIndex;
        veriBagla();
    }

Bu kod bloğunda istenen sayfanın index nosunu e.NewPageIndex parametresi ile alıyorum. Daha sonra bu değeri GridView kontrolümün PageIndex özelliğine set ediyorum. Daha sonra tekrar GridView kontrolü oluşturmuş olduğum metodumla birlikte Data binding yapıyorum. Uygulamamızı çalıştırdığımızda artık sayfalamayı istediğimiz gibi yapıyor.

Default.aspx.cs :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Sayfam eğer ilk defa yüklenecek ise yani postback edilmemişse aşağıdaki metodu çalıştır.
        if (!IsPostBack)
        {
            veriBagla();
        }
    }
    //metodumu tanımlıyorum
    private void veriBagla()
    {
        //Bağlantımı nesnem.
        SqlConnection conn;
        //Verileri tutacağım dataset nesnemi tanımlıyorum.
        DataSet ds = new DataSet();
        //DataSet içindeki DataAdapter
        SqlDataAdapter adr;
        //Bağlantımı web config dosyamdan alıyorum
        string cs = ConfigurationManager.ConnectionStrings["Baglantim"].ConnectionString;
        conn = new SqlConnection(cs);
        //SqlDataAdapter için query
        adr = new SqlDataAdapter("SELECT CategoryID, CategoryName, Description FROM Categories",conn);
        //SqlDataAdapter dolduruluyor
        adr.Fill(ds,"Categories");
        adr.SelectCommand = new SqlCommand("SELECT EmployeeID, LastName, FirstName, City FROM Employees", conn);
        adr.Fill(ds, "Employees");
        //Veri bağlama işlemlerim
        GVKontrol.DataSource = ds;
        GVKontrol.DataMember = "Employees";
        GVKontrol.DataBind();
    }
    protected void GVKontrol_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //Sayfalama kodlarım
        int yeniSayfaIndex = e.NewPageIndex;
        GVKontrol.PageIndex = yeniSayfaIndex;
        veriBagla();
    }
}

Aşağıdaki linkten uygulamayı indirebilirsiniz.

2 yorum

  1. Merhaba ben paging kullanmaya çalıştım gridviewin altında 1 2 yazısı çıkıyor query bana 2 kişi döndürüyor.Sf 1 de 1 kişi çıkıyor ama sayfa 2 için 2 i seçip tekrar sorgula butonuna tıklamam gerekiyor bunu nasıl engelleyebilirim.numaralara basınca değişmesini istiyorum

  2. Sayfa indeksi değiştiğinde sorguyu tekrar çalıştırmanız gerekiyor. Yani PageIndexChaning eventi altında sorgulamanız tekrar çağırılıyor mu, buna bakın. Üstteki örnek için mesela benim VeriBagla metodum tekrar çalışıyor.

Bir cevap yazın

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