Son Haberler
Anasayfa / Yazılım / ASP.NET / GridView Kayıtlarının Seçimi

GridView Kayıtlarının Seçimi

Bu örneğimizde mevcut olarak GridView üzerinde veritabanından listelenmiş olan kayıtların seçilebilmesine değineceğim. Bu yazyı okumadan önce ya da uygulamadan önce bir önceki yazıdan referans almak gerekiyor. Aşağıdaki linkten inceleyebilirsiniz.

http://www.ismailgursoy.com.tr/gridview-kontrolunun-css-ile-bicimlendirilmesi/

GridView kontrolü içinde bir takım sütunlar oluşturabilmekteyiz. Örneğin listelenen veri satırları içinde her bir satır için bir buton kullanabiliriz. Böylelikle butonların olduğu bir sütun oluşmuş olur. Oluşturulabilecek olan sütun kontrolleri :

BoundField : Bu özellik ile istediğimiz sütunları gizleyebilir veya gösterebiliriz. Buna ek olarak herhangi bir satır içinde düzenleme moduna girdiğimizde burada bir textbox kontrolü oluşur ve istenilen düzenleme bu sayede yapılabilir.

ButtonField : GridView içinde her bir satır için tıklanabilir bir buton kontrolü oluşturabiliriz. Butona tıklandığında ilgili tanımlanan event tetiklenir ve istenilen işlemler yapılır. Bir butonun tetikleyebileceği event tipleri : Cancel, Delete, Edit, Select ve Update eventleridir.

CheckBoxField : Bu özellik ile her bir satırda bir CheckBox kontrolü oluşturulur ve böylelikle mantıksal olarak yapılmak istenilen işlemler yapılabilir.

CommandField : Bu özellik ile otomatik olarak bir ButtonField alanı oluşturulur. Bu butonlar tarafından oluşturulan eventler GridView’in current state’ine bağlıdır. Örneğin CommandField alanı herhangi bir düzenleme yapılmadığı anda Edit mode olarak set edilir. Eğer bir düzenleme söz konusu ise Cancel ve Update olarak set edilir.

HyperLinkField : Bu özellik ile her satır için bir tıklanabilir link verebiliriz.

ImageField : Bu özellik ile GridView kontrolümüz içinde image gösterebiliriz.

TemplateField : Bu özellik ile GridView içinde biçimlendirilme yapılabilir.

Şimdi uygulamamıza gerei dönelim, uygulamamızı Visual Studio ortamında açtıktan sonra Default.aspx sayfasının Design bölümüne geçelim. GridView kontrolü seçili iken üst sağında yer alan oka tıklayıp buradan Add New Column seçelim.

Açılan pencereden ;

1) Choose a field type alanından ButtonField seçiniz. Bu oluşturulacak olan sütunun tipini belirler.
2) CommandName alanından Select seçiniz. Bu alan ile ilgili event belirlenir.
3) Text alanına Seçiniz yazınır. Bu alan ile de görüntülenmek istenilen yazı belirtilir.

Bu ayarların ardından GridView kontrolümüzün son hali aşağıdaki gibi oluyor.

Kod kısmımız ise şu şekilde :

Default.aspx :

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







    


    

Veri Listesi

Uygulamamızı bu noktada çalıştırıp tarayıcıda gördüğümüzde ve herhangi bir satırı seçtiğimizde GridView kontrolüm içinde seçilen satır highlighted edilir yani seçili bir band izlenimi verir. Aşağıdaki gibi;

Şu an henüz uygulamamızda seçiniz işlemi için herhangi bir kod tanımlamadım. İlk amacım bu alanların nereden ne şekilde eklendiğini göstermek çünkü. Normalde Seçiniz kısmına bastığımda tetiklenecek olan event GridView kontrolüme ait olan SelectedIndexChanged eventidir. Şimdi bu event altında bir takım işlemler yaptırmak istiyorum. Şu an basit bir şey yapalım. Herhangi bir satırdaki seçiniz butonuna basıldığında GridView altında bir label kontrolünde seçilen satırın ad ve soyad bilgisi ile birlikte seçildiğini belirtir bir cümle oluşturalım. Bunun için öncelikle Default.aspx web formuma bir adet label kontrolü ekliyorum. Kodlarım şu şekilde oluyor :

Default.aspx :

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







    


    

Veri Listesi


Şimdi kod kısmımızı yazmaya gelelim bunun için web formumda design bölümünde GridView nesnemizin üzerinde çift tıklayalım. Varsayılan olarak üretilen event SelectedIndexChanged eventidir. Bu event içinde kodlarımızı yazdım. Aşağıda örnek ile alakalı tüm code behind kodlarını görebilirsiniz..

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

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Sayfam daha önce yüklenmedi ise veriBagla metodumu çalıştırıyorum
        if (!IsPostBack)
        {
            veriBagla();
        }
    }
    //VeriBagla metodum
    private void veriBagla()
    {
        //SQL bağlantımı, komutumu ve datareader nesnemi tanımlıyorum.
        SqlConnection conn;
        SqlCommand comm;
        SqlDataReader reader;
        //Bağlantı satırımı ConfigurationManager sınıfı ile web config dosyasından atamış olduğum isimle çekiyorum.
        string connectionString = ConfigurationManager.ConnectionStrings["Baglantim"].ConnectionString;
        conn = new SqlConnection(connectionString);
        //SQL queryimi yazıyorum. Employees tablosundan çekmek istediğim verileri SELECT ile çekiyorum.
        comm = new SqlCommand("SELECT EmployeeID,LastName,FirstName,City,HomePhone FROM Employees", conn);
        try
        {
            //Bağlantımı açıyorum, dataReader nesnemi çalıştırıyorum ve GridView kontrolüme DataBind işlemi yapıyorum.
            conn.Open();
            reader = comm.ExecuteReader();
            GridView1.DataSource = reader;
            GridView1.DataBind();
            //Reader nesnemi kapatıyorum
            reader.Close();
        }
            //hata olursa vereceğim mesaj
        catch
        {
            Response.Write("Bir hata oluştu");
        }
            //Bağlantımı kapatıyorum
        finally
        {
            conn.Close();
        }
    }
    protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        //Seçilen GridViewin satır no indeksi için int tipinde bir değer oluşturulur ve buaraya bu değer alınır. 
        int selectedRowIndex;
        selectedRowIndex = GridView1.SelectedIndex;
        //Seçilen verinin ad ve soyad bilgisini alacağımız için ilgili değişkenleri tanımladım. 
        GridViewRow row = GridView1.Rows[selectedRowIndex];
        string Lastname = row.Cells[0].Text;
        string FirstName = row.Cells[1].Text;
        //label kontrolüme verilerimi yazdırdım.
        DetayBilgi.Text = "Seçmiş olduğunuz veri " + FirstName + " " + Lastname;
    }
}

Sonuç olarak aşağıdaki gibi bir görüntü elde ederiz.

Bir sonraki yazı da DetailsView kontrolüne giriş yapacağım.

5 yorum

  1. merhaba diyelim ki sql cümlemde id bölümü de var. ve bunu boundfield ile gizledim yani ekranda görünsün istemiyorum. fakat o verilere ihtiyacım var.
    bu veriye nasil ulaşırım.

  2. Merhaba,
    Yukarıda vermiş olduğunuz kodu bire bir uyguladım ancak “Dizin aralık dışındaydı. Negatif bir değer olmamalı ve koleksiyonun boyutundan daha küçük olmalıdır.” şeklinde hata alıyorum. Yardımınızı rica ediyorum

  3. Merhaba
    Benim ihtiyacım olan bir kaydı seçmek değilde 10 kayıt’ın bir okul ismini seçip aynı anda bir butonla değiştirmek bunu yapabilirmiyim.Eğer böyle bir çalışma mantığı varsa söylebilirmisiniz.Teşekkürler…

  4. Merhaba ismail bey gridview de seçilen satırı okuyarak textboxa atıyor. Ben seçilen satırdaki bilgileri sql de o kişiye at diğer bilgileri okumasını istiyorum ve diğer gridview e aktarmasını istiyorum nasıl yapabilirim .örn bi yönetici var ilk satırda ilk satıra tıkladığında o yöneticin ekinindeki kişileri diğer gridviewe aktarmasını istiyorum nasıl yapa bilirim

  5. İsmail bey rica etsem benle işetişime geçe bilir misiniz bi proje yapıyorım bi yerde kaldı işlemim

Bir cevap yazın

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