HTML İçinde ASP.NET Kod Yazımı ve Repeater DataSource Örneği

15 Nisan 2013
Posted by Çağatay Yıldız
3031 Views

Html içerisine asp.net kod yazımı ve bu kodların cs tarafından verdiği veriler bize bir çok projede kolaylık sağlayacaktır. Aynı zamanda Html içerisinde if else gibi kontroller yapabilecek ve bu sayede dilediğimiz veriyi ekrana çıkartabileceğiz. Yapacağımız örnekte Repeater datasource .cs tarafından bir metodu çağırıp bu metotla içerisini dolduracağız. Böylelikle .cs tarafında Repeater.datasource gibi bir kod satırına ve databind event ına ihtiyaç duymayacağız.

Bu yolu kullanmamızın nedeni bazı repeater datasource durumlarında kullanacağımız repeater başka bir repeater içinde olabilir ve oradan metodumuza veri yollamak isteyebiliriz. Repeater kontrolu dışında .cs tarafından bir çok değeri static tanımlayıp html kısmında kullanabilir bu değerleri kontroller kısmında kullanabiliriz. Yapacağımız örnekte iç içe 2 adet repeater kullanıp birinin datasource unu .cs tarafında verip diğerinin datasource unu diğer repeater dan aldığı veri ile kod tarafındaki metoda yollayıp dolduracağız. Çok karışık gibi gözükse de örnek oldukça basit. Öncelikle 2 adet iç içe repeater tanımlıyoruz.

<asp:Repeater ID="RptKategori" runat="server" >
 <ItemTemplate>
 <li><a href="#"><%#Eval("Baslik") %></a>
 <ul>
 <asp:Repeater ID="RptAltKAtegori" DataSource='<%#GetMenusById(Eval("CategoryID").ToString())%>' runat="server">
 <ItemTemplate>

 <li><a href="/tr<%#Eval("PageSlugTr")%>"><div><img src="<%#Eval("AltKategoriPath") %>" alt='<%#Eval("AltBaslik") %>'/></div><div><p><%#Eval("AltBaslik") %></p></div></a></li>
 </ItemTemplate>
 </asp:Repeater>
 </ul>
 </li>
 </ItemTemplate>
 </asp:Repeater>

Sayfamızın kod kısmında ilk önce dışarıdaki repeater datasource veriyoruz. Kod kısmında hepimizin bildiği repeater datasource ve databind işlemlerini gerçekleştiriyoruz.

RptKategori.DataSource = CategoryManager.GetCategoryList();
RptKategori.DataBind();

Tahmin edileceği gibi yukarıda bulunan GetCategoryList metodu repeaterımıza bir list döndürmekte. Gelelim Html kısmında datasource verdiğimiz repeater kullanımına. Id si RptAltKategori olan repeaterımızda  DataSource='<%#GetMenusById(Eval(“CategoryID”).ToString())%>’ şeklinde bir satır dikkatimizi çekmekte. Burada GetMenusById isimli metodumuz yukarıdaki repeaterdan aldığı CategoryID
isimli datayı GetMenusById ile .cs tarafına yollamakta. Kod tarafında bulunan metodumuz ise şu şekilde


public List<Categories> GetMenusById(string id)
 {
 int mnctgryid = Convert.ToInt32(id);
 List<Categories> lsmn = CategoryManager.GetCategoriesById(mnctgryid);
 return lsmn;
 }

GetMenusById isimli metodumuzun dışarıdan aldığı string id aslında bizim Eval satırı içinde yolladığımız değer. Metot bu değere göre işlem yapıp bize tekrar bir liste döndürüyor ve bu dönen liste repeaterımıza datasource oluyor. Bütün işlem bu kadar. Html kısmında ASP.NET kodlarının kullanımıyla ilgili bilgileri aktarmaya devam edeceğiz