İpucu

Merhaba;

 

Bir gridview veya bir repeater'ın onItemDataBound veya onRowDataBound eventinde e.Row.DataItem veya e.Item.DataItem içinden bir değeri işleyerek TemplateControl'e bağlamak bir çoğumuzun kullandığı bir çözümdür. 

Peki Repeater veya GridView içine Anonim tiplerden oluşan bir nesne listesi atarsak değerleri nasıl işleyeceğiz?

 

benim bildiğim iki yöntem var.

Birincisi,  DataBinder nesnesinin Eval metodunu kullanarak bağlamak.

DataBinder.Eval(e.Item.DataItem,"AlanAdi1");
DataBinder.Eval(e.Item.DataItem,"AlanAdi2")

İkincisi; dynamic kullanmak.

ben şahsen bunu terich ediyorum. Ancak bu durum RuntimeBinderException özel durumu oluşturabiliyor. Bunu yakalamanız durumunda daha sağlıklı işlemiş olacağız. bakalım;

dynamic dataItem=e.Item.DataItem;

dataItem.AlanAdi1;

dataItem.AlanAdi2;

 

Bunun diğer yönteme göre daha avantajlı olduğunu düşünüyorum. DataBinder nesnesinin Eval metodu alan sayısı kadar çağırılmıyor. Bunun yerine RuntimeBinder 1 kez çalışıyor ve dataItem nesnesi içi dolduruluyor. Sonra dynamic tipli değişkenimiz artık bizim anonim tipimizin şeklini almış oluyor. 

 

Umarım faydalı olur.