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]