15 Kasım 2009 Pazar

c# Asp.net GridView Sorting Sorting(Sıralama) İşlemleri

Merhaba arkadaslar,

Bu yazımızda C# Asp.Net GridView Sorting işlemini anlatmaya çalışacağım. Anlatma işlemini tamamen örnetk üzerinde yapacağım. Sayfamızın cs ve aspx taraflarını ayrı ayrı yazarak olayın daha iyi kavranmasını sağlayacağım.

Öncelikle sayfamıza bir adet dataGridView objesini sürükleyip bırakalım.

<asp:GridView ID="GridView1" runat="server"

asp:GridView>


GridView objemizi sürkleyip bıraktıktan sonra GridView imizin AllowSorting özelliğine True değerini atayalım.

AllowSorting="True"

Daha sonra GridView imizin Properties penceresini açıp Events Sekmesine geçelim. Events larından Sorting kısmına GridView1_Sorting degerini atayıp entere e basıp. Sayfamızın .cs tarafına geçelim.

Sayfamızın .cs tarafını vermeden önce .aspx sayfamızın son halini sizlere vermek istiyorum.


Default.aspx Sayfamız:
---------------------------

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

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>GridView Sorting Örneği title>

head>

<body>

<form id="form1" runat="server">

<div>

<asp:GridView ID="GridView1" runat="server" AllowSorting="True"

OnSorting="GridView1_Sorting">

asp:GridView>

div>

form>

body>

html>




Şimdi de sayfamızın cs tarafı olan Default.aspx.cs e geçelim.

Öncelikle sıralama yapmakta sıralamanın yönünü belirtmemizde bize yardımcı olacak olan (sıralamanın asc. mi yoksa desc. mi olduğunu belirtmemiz için ) değişkenlerimizi tanımlayalım.

private const string A_Z_Sirali = " ASC";

private const string Z_A_Sirali= " DESC";


Değişkenlerimizi tanımladıktan sonra Connection Srting imizi tanımlayalım.


private string DB_Conn

{

get{

return @"Server=localhost;Database=Deneme_Uygulamalari;Trusted_Connection=true";

}

}



Connection String imizi de tanımladıktan sonra GridView imizi dolduracak olan methodumuzu yazalım. Methodumuzun adı InsetGrid

private void InsetGrid()

{

SqlConnection Conn = new SqlConnection(DB_Conn);

String v_sql_Grid="SELECT * FROM Kitaplar";

SqlDataAdapter Adp= new SqlDataAdapter(v_sql_Grid, Conn);

DataSet Ds = new DataSet();

Adp.Fill(Ds);

GridView1.DataSource = Ds;

GridView1.DataBind();

}



Gelen dataları gridview imize bind ettikten sonra yavaş yavaş sorting meselesine gelelim.

Bunun için yapmamız gereken yeni bir method oluşturmak. Merhodumuzun ismi :GView_Sorting
Bu method ile SortDirection methodunu kullanarak verileri ViewState e set ediyoruz. Daha sonra get methodu ile bunları geri çağırıyoruz.


public SortDirection GView_Sorting

{

get

{

if (ViewState["sortDirection"] == null)

ViewState["sortDirection"] = SortDirection.Ascending;

return (SortDirection) ViewState["sortDirection"];

}

set { ViewState["sortDirection"] = value; }

}



Şimdi gridview imizin GridView1_Sorting eventine geçelim. Burada yapılacak sorting işleminin nasıl yapılacağını belirtelim.


protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

string sortExp = e.SortExpression;

if (GView_Sorting== SortDirection.Ascending)

{

GView_Sorting= SortDirection.Descending;

GView_sort(sortExp, Z_A_Sirali);

}

else

{

GView_Sorting= SortDirection.Ascending;

GView_sort(sortExp, A_Z_Sirali);

}

}



Şimdi de sort işleminin yapılağı methodumuzu yazalım. Bunu adı da GView_sort olsun.

private void GView_sort(string sortExp,string direction)

{

DataTable dt = GetData().Tables[0];

DataView dv = new DataView(dt);

dv.Sort = sortExp+ direction;

GridView1.DataSource = dv;

GridView1.DataBind();

}




Şimdi de sayfamızın .cs tarafının son halini sizlere vermek istiyorum.


Default.aspx.cs Sayfamız:
------------------------------

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;



public partial class _Default : System.Web.UI.Page

{


private const string A_Z_Sirali = " ASC";

private const string Z_A_Sirali= " DESC";



protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

BindData(); /*Sadece Sayfa ilk yuklenirken çalışır.*/

}




private string DB_Conn

{

get{ return @"Server=localhost;Database=Deneme_Uygulamalari;Trusted_Connection=true"; }

}


private void InsetGrid()

{

SqlConnection Conn = new SqlConnection(DB_Conn);

String v_sql_Grid="SELECT * FROM Kitaplar";

SqlDataAdapter Adp= new SqlDataAdapter(v_sql_Grid, Conn);

DataSet Ds = new DataSet();

Adp.Fill(Ds);

GridView1.DataSource = Ds;

GridView1.DataBind();

}


private DataSet GetData()

{

SqlConnection Conn = new SqlConnection(DB_Conn);

String v_sql="SELECT * FROM Kitaplar";

SqlDataAdapter Adp= new SqlDataAdapter(v_sql, Conn );

DataSet Ds = new DataSet();

Adp.Fill(Ds);

return Ds;

}



public SortDirection GView_Sorting

{

get

{

if (ViewState["sortDirection"] == null)

ViewState["sortDirection"] = SortDirection.Ascending;

return (SortDirection) ViewState["sortDirection"];

}

set { ViewState["sortDirection"] = value; }

}





/* Bu alan Sorting işleminin yapılacağı kolonun başlığına tıkladığı zaman çalışır. ----------------------------------------------------------------------------------*/

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

string sortExp = e.SortExpression;

if (GView_Sorting== SortDirection.Ascending)

{

GView_Sorting= SortDirection.Descending;

GView_sort(sortExp, Z_A_Sirali);

}

else

{

GView_Sorting= SortDirection.Ascending;

GView_sort(sortExp, A_Z_Sirali);

}

}





private void GView_sort(string sortExp,string direction)

{

DataTable dt = GetData().Tables[0];

DataView dv = new DataView(dt);

dv.Sort = sortExp+ direction;

GridView1.DataSource = dv;

GridView1.DataBind();

}

}



Hiç yorum yok:

Yorum Gönder