GridView’de Alfabetik Sayfalama

DataGrid ve GridView kontrollerinde sayfalama yaparken varsayılan olarak sayısal veya ileri geri tuşları sunulur. Bununla beraber bu kontroller, özel bir sayfalama şekli de oluşturmamıza izi vermektedir. Masaüstü uygulamalarında çok kullanılan alfabetik sıralamayı web ortamında da kullanacağız. Bu yöntemi üyelerin listesini alırken veya müşteri hesap kartlarınızı listelemek için kullanabilirsiniz. GridView’in footer satırını handle edip RowCreated olayını kullanacağız.

Sayfamızda bir tane GridView kontrol ekleyelim ve Başlayalım.

[html]
<asp:GridView ID="GridView1" runat="server" ShowFooter="true" OnRowCommand="GridView1_RowCommand" OnRowCreated="GridView1_RowCreated" Width="70%">
</asp:GridView>[/html]

GridView nesnemizi oluşturup özelliklerini atadıktan sonra .cs tarafına geçip kodlarımızı ekleyelim. Kontrolün RowCreated olayında footer kısmana harflerimizi bir döngü içerisinde ekleyelim.

[csharp]</pre>
const string baglantiYolu = "Data Source=.;Initial Catalog=TESTDB; user id=sa;password=1";

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GridViewVeriCek("A");
}
}
private void GridViewVeriCek(string karakter)
{//Verilerimizi Çekiyoruz.
SqlConnection con = new SqlConnection(baglantiYolu);
SqlCommand cmd = new SqlCommand("select AdSoyad from tblPersonel where AdSoyad like ‘"+karakter+"%’ order by AdSoyad ASC",con);
if (con.State != ConnectionState.Open)
con.Open();
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
GridView1.DataSource = dr;
GridView1.DataBind();
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName=="KarakterGonder")
{
GridViewVeriCek(e.CommandArgument.ToString()); //RowCreated olayında göndermiş olduğumuz KarakterGonder argümanını çekiyoruz.
}
}
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType==DataControlRowType.Footer)
{
e.Row.Cells.Clear();
TableCell tc = new TableCell();
e.Row.Cells.Add(tc);
LinkButton btn;
for (int i = 65; i < 90; i++) //Alfabedeki karakterleri ASCI kodları ile çekiyoruz.
{
btn = new LinkButton();
btn.Text = Convert.ToChar(i).ToString(); //ASCI kod karşılığına gelen harfi text olarak atıyoruz.
btn.CommandName = "KarakterGonder";
btn.CommandArgument = Convert.ToChar(i).ToString();
tc.Controls.Add(btn);
tc.Controls.Add(new LiteralControl(" ")); //karakterler arasında boşluk için.
}
}
}
<pre>[/csharp]

Ve Sonucumuz.Css ile düzenledikten sonra çok daha hoş bir görünüp kazanacaktır.

Ve Sonucumuz.Css ile düzenledikten sonra çok daha hoş bir görünüp kazanacaktır.

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.