18 Mayıs 2012 Cuma

DetailsView İçindeki Verilere Erişmek

   Zaman zaman DetailsView veri kontrolümüzün içerisindeki verilere erişmek ve kullanmak isteyebiliriz. Bunu yapmak aslında oldukça basit. Bir örnek üzerinden açıklayalım : 

   Öncelikle bir DetailsViewKontrol.aspx adında bir sayfa oluşturuyorum. Sayfama bir adet DetailsView, ListBox ve Button kontrollerini ekliyorum. Yapmak istediğim şey iller tablomun bir bağlı olduğu DetailsView1 kontrolümdeki verileri ListBox içerisine atmak. Bunun için bir foreach döngüsü kuruyorum : 


 protected void Button1_Click(object sender, EventArgs e)
        {
            foreach (DetailsViewRow row in DetailsView1.Rows)
                ListBox1.Items.Add(row.Cells[1].Text);
        }

Butonuma her tıkladığımda DetailsView içerisindeki kayıt listeye ekleniyor. Burada sadece seçili sayfadaki değeri ekliyor. Eğer bütün kayıtları eklemek istiyorsanız DetailsView kontrolünün PageIndex değerini de işin içine katmanız gerekiyor. 

Burada dikkat etmek gereken başka bir husus daha var. Eğer DetailsView içerisindeki bir field, template ise bu durumda yukarıdaki yöntem işe yaramayacaktır. Bu durumda ilgili kontrole erişmeniz gerekir. Örneğin il adımız bir LabelIl adında bir Label kontrolüne bağlı olsun. Bu durumda şöyle bir ifadeyle kontrolümüze erişmek mümkün : 

Label LabelIl = (Label)DetailsView1.FindControl("LabelIl");
ListBox1.Items.Add(LabelIl.Text);