{Merhaba Dünya Ben Emre Kıyak}

 





Gridview içinde radiobutton kullanımı

Share |


Hazırlamakta olduğum bir e-bülten uygulamasında kullanıcıya gridview içinde kayıtlı e-bültenleri listeletmek istiyorum. Dilediği bir kayıdı radiobutton kontrolü aracılığıyla seçip gönder butonuna tıkladığında ilgili kayıdın tüm bülten üyelerine gönderilmesini istiyorum. Ancak gridview içinde radiobuttun kullanımında bir sorunumuz var. Butonlara tıklandığında tek bir seçim yapamıyoruz. Birden fazla radio buton seçimi yapılıyor. Bunun nedeni de uygulama çalıştırıldığında radiobutton kontrollerine farklı name değerlerinin atanmasıdır şeklinde özetleyebiliriz. Bunun önüne geçebilmek için çeşitli çözümler vardır. Javascript koduyla ya da literale html radiobutton kodlarının basılmasıyla çözülür. Ben de bugün çalışırken farklı bir yöntem keşfettim bunu paylaşmak istiyorum.

Gridview objeisinde oluşturduğunuz bir kolona radiobutton ekleyin ve autopostback özelliğini true olarak belirleyin ardından çift tıklayarak checkedChanged eventine girelim.

Yapacağımız işlem tıkladığımız radiobuttonun gridview içindeki indexine erişmek ve diğer radiobutonların checked özelliğini false olarak ayarlamak. Böylece hangi radiobuttona tıklarsanız tıklayın tek bir tanesi seçilecektir. Tabi çok fazla kaydınız varsa bu çözüm yolu performanslı olmayabilir de ama denemekte fayda var.

 

protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
    {
        //
        RadioButton rdbtn = sender as RadioButton;
       
        //RADIOBUTTONUN INDEXI BULUNUR
        GridViewRow row = rdbtn.NamingContainer as GridViewRow;
        Int32 rowIndex = row.RowIndex;
       
        //GRID İÇİNDEKİ TÜM SATIRLARDA DÖNÜLÜR
        //SEÇİLİ OLAN RADİONUN İNDEXI DIŞINDAKİ TÜM BUTONLARIN
        //CHECKED ÖZELLİĞİ FALSE OLARAK AYARLANIR
 
        foreach (GridViewRow dtl in GridView1.Rows)
        {
            RadioButton radyo = dtl.FindControl("RadioButton1") as RadioButton;
 
            Int32 satir = dtl.RowIndex;
 
            if (satir != rowIndex)
            {
                radyo.Checked = false;
            }
            else
            {
                radyo.Checked = true;
            }
        }
    }

 


15 Ağustos 2009 Cumartesi akşam 22:58

Mesajınızı yazabilirsiniz


Rumuz :  
 
Email :   
  
Mesaj :  
Bu konuya abone olmak ister misiniz ?

Güvenlik kodunu göremiyorsanız sayfayı yenileyin.
Güvenlik Kodu :