Telerik Rad Grid for ASP.NET AJAX – Create Hierarchical Data-Binding on Run-Time at Code Behind

Default.cs
  1. using System;
  2. using System.Web;
  3. using System.Web.UI;
  4. using System.Web.UI.WebControls;
  5.  
  6. using System.Data;
  7. using System.Configuration;
  8. using System.Web.Security;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. using Telerik.Web.UI;
  12.  
  13. public partial class Default : System.Web.UI.Page
  14. {
  15.     public DataTable ChildTable
  16.     {
  17.         get { return Session["Child"] as DataTable; }
  18.         set { Session["Child"] = value; }
  19.     }
  20.     public DataTable ParentTable
  21.     {
  22.         get { return Session["Parent"] as DataTable; }
  23.         set { Session["Parent"] = value; }
  24.     }
  25.  
  26.  
  27.     protected void Page_Load(object sender, EventArgs e)
  28.     {
  29.         this.RadGrid1.NeedDataSource += new GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource);
  30.         this.RadGrid1.DetailTableDataBind += new GridDetailTableDataBindEventHandler(RadGrid1_DetailTableDataBind);
  31.     }
  32.  
  33.     protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
  34.     {
  35.         if (!e.IsFromDetailTable)
  36.         {
  37.             // Veriler doldurulur..
  38.             #region "Data Load"
  39.             DataTable dt = new DataTable("Tablom");
  40.  
  41.             int columnCount = 3;
  42.             int rowCount = 10;
  43.             int index = 1;
  44.             int index2 = 1;
  45.  
  46.             for (index = 1; index <= columnCount; index++)
  47.             {
  48.                 DataColumn clm = new DataColumn("Column" + index.ToString());
  49.                 dt.Columns.Add(clm);
  50.             }
  51.  
  52.  
  53.             for (index = 1; index <= rowCount; index++)
  54.             {
  55.                 DataRow dr = dt.NewRow();
  56.  
  57.  
  58.                 for (index2 = 1; index2 <= columnCount; index2++)
  59.                 {
  60.                     if ((index2 == 1))
  61.                     {
  62.                         dr[index2 – 1] = "Value-" + index.ToString();
  63.                     }
  64.                     else
  65.                     {
  66.                         dr[index2 – 1] = index * index2;
  67.                     }
  68.  
  69.                 }
  70.  
  71.                 dt.Rows.Add(dr);
  72.  
  73.             }
  74.  
  75.             this.ParentTable = dt;
  76.  
  77.             DataTable dt2 = new DataTable("Tablom2");
  78.  
  79.             int columnCount2 = 2;
  80.             int rowCount2 = 100;
  81.  
  82.             for (index = 1; index <= columnCount2; index++)
  83.             {
  84.                 DataColumn clm = new DataColumn("Column" + index.ToString());
  85.                 dt2.Columns.Add(clm);
  86.             }
  87.  
  88.  
  89.             for (index = 1; index <= rowCount2; index++)
  90.             {
  91.                 DataRow dr = dt2.NewRow();
  92.  
  93.  
  94.                 for (index2 = 1; index2 <= columnCount2; index2++)
  95.                 {
  96.                     if ((index2 == 1))
  97.                     {
  98.                         dr[index2 – 1] = "Value-" + index.ToString();
  99.                     }
  100.                     else
  101.                     {
  102.                         dr[index2 – 1] = index;
  103.                     }
  104.  
  105.                 }
  106.  
  107.                 dt2.Rows.Add(dr);
  108.  
  109.             }
  110.  
  111.             this.ChildTable = dt2;
  112.  
  113.             #endregion
  114.  
  115.             // ======================================================================
  116.             // ======================================================================
  117.  
  118.             // Ana tablo verileri ve tan?mlamalar? yap?l?r.
  119.             this.RadGrid1.MasterTableView.DataKeyNames = new string[] { "Column2" };
  120.             this.RadGrid1.DataSource = this.ParentTable;
  121.  
  122.             // Alt tablo tan?mlamas? yap?l?r.
  123.             GridTableView child = new GridTableView();
  124.             child.DataKeyNames = new string[] { "Column2" };
  125.  
  126.             // Alt tablo ana tabloya ba?lan?r..
  127.             this.RadGrid1.MasterTableView.DetailTables.Add(child);
  128.         }
  129.     }
  130.  
  131.     protected void RadGrid1_DetailTableDataBind(object source, GridDetailTableDataBindEventArgs e)
  132.     {
  133.         // Alt tablo verisi talep edildi?inde ilgili sorgulama yap?l?r.
  134.         DataTable dt = this.ChildTable.Clone();
  135.         DataRow[] rows = this.ChildTable.Select("Column2 like '%" + e.DetailTableView.ParentItem["Column2"].Text + "%'");
  136.  
  137.         foreach (DataRow row in rows)
  138.         {
  139.             DataRow dr = dt.NewRow();
  140.             dr[0] = row[0];
  141.             dr[1] = row[1];
  142.  
  143.             dt.Rows.Add(dr);
  144.         }
  145.  
  146.         // Elde edilen sonu?lar alt tabloya ba?lan?r..
  147.         e.DetailTableView.DataSource = dt;
  148.     }
  149. }

Nedir Tv 4.Yıldönümü Sermineri

Gerçekten son derece bilgi dolu ve faydalı bir etkinlikti. Katılmayan arkadaşların videoları Daron Yöndem ‘in ya da NedirTv sitesinde yayınlanınca izlemesini şiddetle tavsiye ederim. NedirTv?com

Görsellik konusunda Daron Yöndem’in HTML5 bölümü süperdi. Daron Yöndem

Selçuk Yavuz’un MVC hakkında bilgilerimizi toparlayıp, bir o kadar detaylı fakata kafamızı karıştırmadan anlattıkları ASP.NET MVC sayfa kaynak kodları gibi berrak ve açıktı. 🙂 Selçuk Yavuz

Uğur Umutluoğlu’nun ASP.NET AJAX konusu gerçekten kafamda farklı farklı fikirlerin çakmasına sebep oldu. Gerçekten gelecekte bu alanda ciddi gelişmeler göreceğiz. FAkat bu kadarı bile beyin fırtınalarımı tetikledi. 🙂 Uğur Umutluoğlu

Burak Selim Şenyurt’un WCF konusu, seminerin son kısmında kalsa da biraz konsantre olarak ve yoğunlaşarak dinlediğimizde ciddi gelişmelerin ve gerçekten öğrenilmesi gereken çok geniş fakat bir o kadar geleceğin teknolojisiyle şimdiden tanışmış olduk. Tabii bu konuda Burak Selim Şenyurt’un süper bir makale dizisi var. Önümüzdeki zamanlarda detaylıca okumayı düşündüğüm bir dizi, şiddetle tavsiye ederim. Burak Selim Şenyurt

Etkinlik Resimleri..