{"id":126,"date":"2008-12-25T08:02:00","date_gmt":"1970-01-01T00:00:00","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=126"},"modified":"2008-12-25T08:02:00","modified_gmt":"1970-01-01T00:00:00","slug":"gridview-kontrolu-iii-templatefield-kullanimi-ve-grid-icinde-grid-kullanmak","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2008\/12\/25\/gridview-kontrolu-iii-templatefield-kullanimi-ve-grid-icinde-grid-kullanmak\/","title":{"rendered":"GridView Kontrol\u00fc  &#8211; III &#8211; TemplateField Kullanimi ve Grid i\u00e7inde Grid Kullanmak."},"content":{"rendered":"<p>\n\tBu makalemizde GridView kontrol&uuml; i&ccedil;inde template field alanlarin kullanimina deginecegiz.&nbsp; Template field i&ccedil;erisinde istedigimiz HTML taglarini ve ASP.NET kontrollerini kullanabiliriz. Bu &ouml;zellik isteklerimiz dogrultusunda grid satirlari olusturabilmemizi saglar.<\/p>\n<p>\n\t<a href='www.yazilimmutfagi.com'>.<\/a><\/p>\n<p>\n\t<a href=\"http:\/\/www.yazilimmutfagi.com\/Makale\/Img\/Sabri\/MakaleWeb.rar\">Projeyi buradan indirebilirsiniz.<\/a><\/p>\n<pre class=\"brush:html\">\n&lt;asp:GridView ID=&quot;GridViewMusteri&quot; runat=&quot;server&quot;&gt;\n    &lt;Columns&gt;\n        &lt;asp:TemplateField&gt;\n            &lt;ItemTemplate&gt;\n\n            &lt;\/ItemTemplate&gt;\n        &lt;\/asp:TemplateField&gt;\n    &lt;\/Columns&gt;\n&lt;\/asp:GridView&gt;<\/pre>\n<p>\n\tYukarida da g&ouml;r&uuml;ld&uuml;g&uuml; gibi gridin satirlarini olusturacak kismi template field i&ccedil;erisindeki ItemTemplate i&ccedil;erisine koyuyoruz. Yapacagimiz &ouml;rnek de Microsoft tarafindan &uuml;cretsiz olarak yayinlanan AdvantureWorkDW2008 veritabanini kullanacagiz. Isterseniz sizde bu eklentiyi indirip kendi veritabaniniza ekleyebilirsiniz. SQL Server 2008 i&ccedil;in olanini <a href=\"http:\/\/www.codeplex.com\/MSFTDBProdSamples\/Release\/ProjectReleases.aspx?ReleaseId=18407\">buradan <\/a>indirebilirsiniz.<\/p>\n<p>\n\tBu &ouml;rnek de M&uuml;steri bilgilerini grid &uuml;zerinde g&ouml;sterecegiz. M&uuml;steri se&ccedil;ildigin de ise se&ccedil;ilen satirin hemen altinda m&uuml;sterinin yapmis oldugu interne, FactInternetSales ve DimProduct alisverislerinden 10 tanesini g&ouml;sterecegiz. Bunun i&ccedil;in DimCustomert tablolarini kullanacagiz.&nbsp; Ilk olarak Kod i&ccedil;erisinde Customer tablosundan bilgileri alip gride bind eden fonksiyonu yazalim. Sonrada gridimize template fieldleri ekleyelim.<\/p>\n<pre class=\"brush:csharp\">\nprotected void Page_Load(object sender, EventArgs e)\n{\n    if (!IsPostBack)\n    {\n        MusterileriGetir();\n    }\n}<\/pre>\n<pre class=\"brush:sql\">\nSqlConnection connection = new SqlConnection(&quot;Data Source=.;\nInitial Catalog=AdventureWorksDW2008;Integrated Security=True&quot;);<\/pre>\n<pre class=\"brush:sql\">\nprivate void MusterileriGetir()\n{   \n    connection.Open();\n    SqlDataAdapter da = new SqlDataAdapter(&quot;SELECT TOP 500 CustomerKey,  \n    FirstName,LastName, Gender, EmailAddress, AddressLine1 FROM DimCustomer&quot;,\n    connection);\n    DataTable dTable = new DataTable();\n    da.SelectCommand.ExecuteNonQuery();\n    da.Fill(dTable);\n    GridViewMusteri.DataSource = dTable;\n    GridViewMusteri.DataBind();\n    connection.Close();\n}<\/pre>\n<p>\n\t&nbsp;Yukaridaki kodu ekledikten sonra gridi asagidaki gibi d&uuml;zenleyin.<\/p>\n<pre class=\"brush:csharp\">\n&lt;asp:GridView ID=&quot;GridViewMusteri&quot; AutoGenerateColumns=&quot;false&quot; runat=&quot;server&quot;\n OnRowCommand=&quot;GridViewMusteri_RowCommand&quot;&gt;\n    &lt;Columns&gt;\n        &lt;asp:TemplateField&gt;\n            &lt;HeaderTemplate&gt;\n                &lt;table width=&quot;100%&quot;&gt;\n                    &lt;tr&gt;\n                        &lt;th&gt;\n                            Isim\n                        &lt;\/th&gt;\n                        &lt;th&gt;\n                           Soyad\n                        &lt;\/th&gt;\n                        &lt;th&gt;\n                            Cinsiyet\n                        &lt;\/th&gt;\n                        &lt;th&gt;\n                            E-Posta\n                        &lt;\/th&gt;\n                        &lt;th&gt;\n                            Adres\n                        &lt;\/th&gt;\n                        &lt;th&gt;\n                            G&ouml;ster\n                        &lt;\/th&gt;\n                        &lt;th&gt;\n                            Gizle\n                        &lt;\/th&gt;                  \n                  &lt;\/tr&gt;\n            &lt;\/HeaderTemplate&gt;\n            &lt;ItemTemplate&gt;\n         &lt;tr style=&quot;font-size: 12px; font-weight: normal;&quot; align=&quot;left&quot;&gt;\n                 &lt;td&gt;\n      &lt;asp:Label ID=&quot;Label1&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;FirstName&quot;) %&gt;&#39;&gt;\n                   &lt;\/asp:Label&gt;\n                &lt;\/td&gt;\n                &lt;td&gt;\n     &lt;asp:Label ID=&quot;Label2&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;LastName&quot;) %&gt;&#39;&gt;\n                  &lt;\/asp:Label&gt;\n                &lt;\/td&gt;\n                &lt;td&gt;\n     &lt;asp:Label ID=&quot;Label3&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;Gender&quot;) %&gt;&#39;&gt;\n                  &lt;\/asp:Label&gt;\n                &lt;\/td&gt;\n                &lt;td&gt;\n     &lt;asp:Label ID=&quot;Label4&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;EmailAddress&quot;) %&gt;&#39;&gt;\n                &lt;\/asp:Label&gt;\n                &lt;\/td&gt;\n                &lt;td&gt;\n     &lt;asp:Label ID=&quot;Label5&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;AddressLine1&quot;) %&gt;&#39;&gt;\n                &lt;\/asp:Label&gt;\n                &lt;\/td&gt;\n                &lt;td&gt;\n                 &lt;asp:LinkButton ID=&quot;LinkButton1&quot; CommandName=&quot;G&ouml;ster&quot; \n                 CommandArgument=&#39;&lt;%#Bind(&quot;CustomerKey&quot;) %&gt;&#39;runat=&quot;server&quot;&gt;\n                 G&ouml;ster&lt;\/asp:LinkButton&gt;\n               &lt;\/td&gt;\n               &lt;td&gt;\n     &lt;asp:LinkButton ID=&quot;LinkButton2&quot; CommandName=&quot;Gizle&quot; CommandArgument=\n       &#39;&lt;%#Bind(&quot;CustomerKey&quot;) %&gt;&#39; runat=&quot;server&quot;&gt;Gizle&lt;\/asp:LinkButton&gt;\n                &lt;\/td&gt;\n                &lt;td&gt;\n            &lt;\/ItemTemplate&gt;\n            &lt;FooterTemplate&gt;\n                &lt;\/table&gt;\n            &lt;\/FooterTemplate&gt;\n        &lt;\/asp:TemplateField&gt;\n    &lt;\/Columns&gt;\n&lt;\/asp:GridView&gt;<\/pre>\n<p>\n\t&nbsp;Burada dikkat etmemiz gereken yerlerden birincisi Grid i&ccedil;erisinde<\/p>\n<pre class=\"brush:csharp\">\nAutoGenerateColumns=&quot;false&quot;<\/pre>\n<p>\n\ttagini eklemeniz aksi takdirde grid bind ettiginiz kaynakta bulunan kolonlari kendisi otomatik olarak &uuml;retir. Biz bu &ouml;rnek de template filedlerle &ccedil;alismak istedigimizden bunu false olarak ayarliyoruz. Ikinci &ouml;nemli nokta template field i&ccedil;ine ekledigimiz link buton i&ccedil;in commandname ve commandargument taglarini ayarlamaniz. Ayrica grid &uuml;zerindeki satirlarda bir event oldugu zaman yani ekledigimiz link buton tiklandigi zaman &ccedil;alisacak olan fonksiyonu ayarladik<\/p>\n<pre class=\"brush:csharp\">\nOnRowCommand = &quot;GridViewMusteri_RowCommand&quot;<\/pre>\n<p>\n\tBu fonksiyonun i&ccedil;ini nasil dolduracagimizi ilerleyen kisimlarda anlatacagim. Projeniz &ccedil;alistirdiginiz zaman M&uuml;steri tablosundaki ilk 500 kayit grid i&ccedil;erisinde g&ouml;r&uuml;nt&uuml;lenecektir.<\/p>\n<p>\n\t<a href='www.yazilimmutfagi.com'>.<\/a><\/p>\n<p>\n\tSimdi sira geldi se&ccedil; butonuna tiklandigi zaman m&uuml;sterinin yapmis oldugu alisverislerden 10 tanesini g&ouml;stermeye. Bunun i&ccedil;in ilk olarak template field i&ccedil;inde bulunan tablomuza yeni bir satir ekleyecegiz bunun i&ccedil;ine de yeni bir grid koyacagiz. M&uuml;steri gridi &uuml;zerinde g&ouml;ster butonuna basildigi zaman se&ccedil;ilen m&uuml;sterinin CustomerKey &ouml;zelligi ile veri tabanindan sorgu yaparak bu m&uuml;sterinin yapmis oldugu son 10 alisverisi yeni giridimize bind edecegiz ayrica Gizle butonuna basildiginda M&uuml;sterinin Siparis detayini gizleyecegiz. Gridimizin yeni halinin bulundugu aspx sayfasi ve yazmamiz gereken C# kodlari asagidaki gibidir.<\/p>\n<pre class=\"brush:csharp\">\n&lt;asp:GridView ID=&quot;GridViewMusteri&quot; AutoGenerateColumns=&quot;false&quot; runat=&quot;server&quot;\nOnRowCommand=&quot;GridViewMusteri_RowCommand&quot;&gt;\n&lt;Columns&gt;\n&lt;asp:TemplateField&gt;\n    &lt;HeaderTemplate&gt;\n        &lt;table width=&quot;800px&quot;&gt;\n            &lt;tr&gt;\n                &lt;th&gt;\n                   Isim\n                &lt;\/th&gt;\n                &lt;th&gt;\n                    Soyad\n                &lt;\/th&gt;\n                &lt;th&gt;\n                   Cinsiyet\n                &lt;\/th&gt;\n                &lt;th&gt;\n                    E-Posta\n                &lt;\/th&gt;\n                &lt;th&gt;\n                    Adres\n                &lt;\/th&gt;\n                &lt;th&gt;\n                   G&ouml;ster\n                &lt;\/th&gt;\n                &lt;th&gt;\n                    Gizle\n               &lt;\/th&gt;\n          &lt;\/tr&gt;\n    &lt;\/HeaderTemplate&gt;\n    &lt;ItemTemplate&gt;\n        &lt;tr style=&quot;font-size: 13px; font-weight: normal;&quot; align=&quot;left&quot;&gt;\n            &lt;td&gt;\n       &lt;asp:Label ID=&quot;Label1&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;FirstName&quot;) %&gt;&#39;&gt;\n                     &lt;\/asp:Label&gt;\n            &lt;\/td&gt;\n            &lt;td&gt;\n       &lt;asp:Label ID=&quot;Label2&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;LastName&quot;) %&gt;&#39;&gt;\n                     &lt;\/asp:Label&gt;\n            &lt;\/td&gt;\n            &lt;td&gt;\n     &lt;asp:Label ID=&quot;Label3&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;Gender&quot;) %&gt;&#39;&gt;\n                     &lt;\/asp:Label&gt;\n            &lt;\/td&gt;\n            &lt;td&gt;\n    &lt;asp:Label ID=&quot;Label4&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;EmailAddress&quot;) %&gt;&#39;&gt;\n                     &lt;\/asp:Label&gt;\n            &lt;\/td&gt;\n            &lt;td&gt;\n     &lt;asp:Label ID=&quot;Label5&quot; runat=&quot;server&quot; Text=&#39;&lt;%#Bind(&quot;AddressLine1&quot;) %&gt;&#39;&gt;\n                     &lt;\/asp:Label&gt;\n            &lt;\/td&gt;\n            &lt;td&gt;\n                &lt;asp:LinkButton ID=&quot;LinkButton1&quot; CommandName=&quot;G&ouml;ster&quot;\n                     CommandArgument=&#39;&lt;%#Bind(&quot;CustomerKey&quot;) %&gt;&#39;\n                    runat=&quot;server&quot;&gt;G&ouml;ster&lt;\/asp:LinkButton&gt;\n            &lt;\/td&gt;\n            &lt;td&gt;\n                &lt;asp:LinkButton ID=&quot;LinkButton2&quot; CommandName=&quot;Gizle&quot; \n                   CommandArgument=&#39;&lt;%#Bind(&quot;CustomerKey&quot;) %&gt;&#39;\n                    runat=&quot;server&quot;&gt;Gizle&lt;\/asp:LinkButton&gt;\n            &lt;\/td&gt;\n        &lt;\/tr&gt;\n        &lt;tr style=&quot;font-size: 12px; font-weight: normal;&quot; align=&quot;left&quot;&gt;\n            &lt;td colspan=&quot;7&quot;&gt;\n                &lt;asp:GridView ID=&quot;GridViewSiparisListesi&quot; Width=&quot;100%&quot;\n                                         AutoGenerateColumns=&quot;false&quot;\n                    runat=&quot;server&quot;&gt;\n                    &lt;Columns&gt;\n                        &lt;asp:TemplateField&gt;\n                            &lt;HeaderTemplate&gt;\n                                &lt;table width=&quot;100%&quot; style=&quot;font-size: 12px; \n                                        font-weight: normal;&quot; align=&quot;left&quot;&gt;\n                                    &lt;tr&gt;\n                                        &lt;th&gt;\n                                            Siparis No\n                                        &lt;\/th&gt;\n                                        &lt;th&gt;\n                                           Tutar\n                                        &lt;\/th&gt;\n                                        &lt;th&gt;\n                                           &Uuml;r&uuml;n Adi\n                                       &lt;\/th&gt;\n                                   &lt;\/tr&gt;\n                            &lt;\/HeaderTemplate&gt;\n                            &lt;ItemTemplate&gt;\n                                &lt;tr&gt;\n                                    &lt;td&gt;\n                           &lt;asp:Label ID=&quot;Label7&quot; runat=&quot;server&quot; \n                           Text=&#39;&lt;%#Bind(&quot;SiparisNo&quot;) %&gt;&#39;&gt;&lt;\/asp:Label&gt;\n                                    &lt;\/td&gt;\n                                    &lt;td&gt;\n                            &lt;asp:Label ID=&quot;Label8&quot; runat=&quot;server&quot;\n                              Text=&#39;&lt;%#Bind(&quot;Tutar&quot;) %&gt;&#39;&gt;&lt;\/asp:Label&gt;\n                                    &lt;\/td&gt;\n                                    &lt;td&gt;\n                              &lt;asp:Label ID=&quot;Label9&quot; runat=&quot;server&quot;\n                             Text=&#39;&lt;%#Bind(&quot;UrunAdi&quot;) %&gt;&#39;&gt;&lt;\/asp:Label&gt;\n                                    &lt;\/td&gt;\n                                &lt;\/tr&gt;\n                            &lt;\/ItemTemplate&gt;\n                            &lt;FooterTemplate&gt;\n                                &lt;\/table&gt;\n                            &lt;\/FooterTemplate&gt;\n                        &lt;\/asp:TemplateField&gt;\n                   &lt;\/Columns&gt;\n                &lt;\/asp:GridView&gt;\n            &lt;\/td&gt;\n        &lt;\/tr&gt;\n    &lt;\/ItemTemplate&gt;\n    &lt;FooterTemplate&gt;\n    &lt;\/table&gt;\n    &lt;\/FooterTemplate&gt;\n&lt;\/asp:TemplateField&gt;\n&lt;\/Columns&gt;\n&lt;\/asp:GridView&gt;<\/pre>\n<p>\n\tAspx sayfanizi yukarda ki gibi d&uuml;zenledikten sonra kod sayfaniza da asagidaki kodlari ekleyin.<\/p>\n<pre class=\"brush:csharp\">\nprotected void GridViewMusteri_RowCommand\n(object sender, GridViewCommandEventArgs e)\n{\nif (e.CommandName == &quot;G&ouml;ster&quot;)\n {\n     string sqlCmnd = String.Format(@&quot;SELECT   TOP 10  \n     FactInternetSales.CustomerKey\n     as MusteriKey, FactInternetSales.SalesOrderNumber as SiparisNo, \n     FactInternetSales.SalesAmount as Tutar, \n     DimProduct.EnglishProductName as UrunAdi \n     FROM  FactInternetSales LEFT OUTER JOIN DimProduct ON \n     FactInternetSales.ProductKey = DimProduct.ProductKey \n     Where \n     FactInternetSales.CustomerKey = {0}&quot;, e.CommandArgument.ToString());\n        connection.Open();\n        SqlDataAdapter da = new SqlDataAdapter(sqlCmnd, connection);\n        DataTable dTable = new DataTable();\n        da.SelectCommand.ExecuteNonQuery();\n        da.Fill(dTable);\n        int rowIndex = \n   ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)).RowIndex;\n        GridView siparisListesiGrid =(GridView)GridViewMusteri.\nRows[rowIndex].FindControl(&quot;GridViewSiparisListesi&quot;);\n        siparisListesiGrid.DataSource = dTable;\n        siparisListesiGrid.DataBind();\n        connection.Close();\n }\nelse if (e.CommandName == &quot;Gizle&quot;)\n {\n  int rowIndex = \n((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)).RowIndex;\n  GridView siparisListesiGrid =(GridView)GridViewMusteri\n.Rows[rowIndex].FindControl(&quot;GridViewSiparisListesi&quot;);\n  siparisListesiGrid.DataSource = null;\n  siparisListesiGrid.DataBind();\n }\n}<\/pre>\n<p>\n\t<a href='www.yazilimmutfagi.com'>.<\/a><\/p>\n<p>\n\tYukarda ki kodu incelediginizde<\/p>\n<pre class=\"brush:csharp\">\n((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)).RowIndex;\n  GridView siparisListesiGrid = (GridView)GridViewMusteri\n.Rows[rowIndex].FindControl(&quot;GridViewSiparisListesi&quot;); <\/pre>\n<p>\n\tSatiri dikkatinizi &ccedil;ekmis olmali. Grid i&ccedil;erisine ekledigimiz kontrollere kod i&ccedil;ersinden direk erisemeyiz bu y&uuml;zden FindControl fonksiyonunu kullanmamiz gerekir. Bu fonksiyonu kullanmak i&ccedil;inde G&ouml;ster butonuna basilan satiri bilmemiz lazim. e.CommandSource satirdaki g&ouml;ster linkbuttona isaret etmektedir. Onun parentti da bulundugu cell e isaret eder. Cell in paranti ise bulundugu satirdir. Bu satir GridViewRow tipinde bir kontrold&uuml;r. Bu yolla butona tiklanan satir indexini bularak Gridin o satirdaki kontrolleri &uuml;zerinden<\/p>\n<pre class=\"brush:csharp\">\nGridViewMusteri.Rows[rowIndex].FindControl<\/pre>\n<p>\n\tmetodu ile arama yapabiliriz.<\/p>\n<p>\n\tYeni Makalelerde bulusmak &uuml;zere hoscakalin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu makalemizde GridView kontrol&#252; i&#231;inde template field alanlarin kullanimina deginecegiz. Template field i&#231;erisinde istedigimiz HTML taglarini ve ASP.NET kontrollerini kullanabiliriz. Bu &#246;zellik isteklerimiz dogrultusunda grid satirlari olusturabilmemizi saglar.<\/p>\n","protected":false},"author":517,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[407],"tags":[5524,5367,4639,6203,6377,5865,6297,3868,6320,5065,6148,4882,4145],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/126"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/517"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=126"}],"version-history":[{"count":0,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/126\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}