﻿
{"id":1623,"date":"2013-05-01T23:07:20","date_gmt":"2013-05-01T23:07:20","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=1623"},"modified":"2013-05-02T00:40:43","modified_gmt":"2013-05-02T00:40:43","slug":"asp-net-mvc-4-0-webgrid-nesnesi","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-4-0-webgrid-nesnesi\/","title":{"rendered":"Asp.NET MVC 4.0 WebGrid Nesnesi"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Asp.NET Web Form mimarisinde hem g\u00f6r\u00fcn\u00fcrl\u00fck a\u00e7\u0131s\u0131ndan hem de i\u015flevsellik a\u00e7\u0131s\u0131ndan en iyi veri g\u00f6r\u00fcnt\u00fcleme kontrollerinden birisi GridView kontrol\u00fcd\u00fcr.Lakin mevzu Asp.NET MVC mimarisine gelince i\u015fin rengi de\u011fi\u015fiyor.MVC&#8217;yi ilk \u00f6\u011frenme a\u015famas\u0131nda, veri g\u00f6r\u00fcnt\u00fcleme yolu prosed\u00fcrel programlamada oldu\u011fu gibi d\u00f6ng\u00fcler arac\u0131l\u0131\u011f\u0131yla sat\u0131rlar olu\u015fturmaktan ibaretti.Haliyle bizim gibi Asp.NET mimarisine al\u0131\u015fk\u0131n \u00e7ocuklarda &#8220;Ulan MVC !!! GridView&#8217;e benzer nesnen yok mu?&#8221; d\u00fc\u015f\u00fcncelerle MVC mimarisinin eksik yan\u0131n\u0131 ele\u015ftiriyorduk.\u0130\u015fte bu eksik pay\u0131 Asp.NET MVC 4.0 versiyonuyla gelen WebGrid nesnesi tamamlamaktad\u0131r.Art\u0131k verilerimizi prosed\u00fcrel programlama yapmadan bu nesne sayesinde listeleyebilecek ve nesnenin art\u0131lar\u0131 sayesinde sayfalama gibi \u00f6zelliklerde yapabilece\u011fiz.<br \/>\n<!--more--><br \/>\n<span style=\"color: #ff0000;\"><strong>WebGrid Nedir?<\/strong><\/span><br \/>\nEee o kadar anlatt\u0131k yukar\u0131da.Gerek yok burada teferruata.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Konuya Haz\u0131rl\u0131k Yapal\u0131m<\/strong><\/span><br \/>\nWebGrid nesnesinin her \u00f6zellik ve metodunu irdelerken \u00f6rneklendirece\u011fimizden dolay\u0131 \u00f6rneklendirmede kullanaca\u011f\u0131m\u0131z veritaban\u0131n\u0131 \u015fimdiden haz\u0131rlamak istiyorum.SQL Server veritaban\u0131nda &#8220;OrnekVeritabani&#8221; isminde bir veritaban\u0131 ve bu veritaban\u0131 i\u00e7inde &#8220;OrnekTablo&#8221; isminde bir tablo olu\u015ftural\u0131m.<\/p>\n<p>&#8220;OrnekTablo&#8221; isimli tablomuzun kolonlar\u0131 a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTablo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1627\" alt=\"OrnekTablo\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTablo.png\" width=\"340\" height=\"141\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTablo.png 340w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTablo-300x124.png 300w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><\/a><\/p>\n<p>&#8220;OrnekTablo&#8221; isimli tablomuza a\u015fa\u011f\u0131daki gibi \u00fc\u00e7 tane veri giri\u015fi yapt\u0131m.<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTabloVeriGirisi.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1628\" alt=\"OrnekTabloVeriGirisi\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTabloVeriGirisi.png\" width=\"434\" height=\"125\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTabloVeriGirisi.png 434w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/OrnekTabloVeriGirisi-300x86.png 300w\" sizes=\"auto, (max-width: 434px) 100vw, 434px\" \/><\/a><\/p>\n<p>Son olarak bir MVC projesi olu\u015fturup, Model katman\u0131nda bir &#8220;Veritabani.dbml&#8221; isminde dosyam\u0131z\u0131 olu\u015fturup, Entitylerimizin olu\u015fmas\u0131n\u0131 sa\u011fl\u0131yoruz.<\/p>\n<p>&#8220;Home(Controller).cs&#8221; isimli Controller s\u0131n\u0131f\u0131ndaki kodlar\u0131m\u0131z a\u015fa\u011f\u0131daki gibi olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class HomeController : Controller\r\n    {\r\n        VeritabaniDataContext Veri = new VeritabaniDataContext();\r\n\r\n        public ActionResult Index()\r\n        {\r\n            List&lt;OrnekTablo&gt; TumVeriler = Veri.OrnekTablos.ToList();\r\n            if (TumVeriler != null &amp;&amp; TumVeriler.Count &gt; 0)\r\n            {\r\n                return View(TumVeriler);\r\n            }\r\n            else\r\n            {\r\n                return View();\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<p><span style=\"color: #ff0000;\"><strong>\u00d6zellik ve Metodlar\u0131<\/strong><\/span><\/p>\n<p><strong>GetHtml<\/strong> = WebGrid sayesinde verilerimizi en sade \u015fekilde g\u00f6r\u00fcnt\u00fclemeye yarar.<br \/>\n\u00d6rnek olarak a\u015fa\u011f\u0131daki kodlar\u0131 inceleyiniz.<br \/>\nIndex Action&#8217;\u0131n\u0131n View katman\u0131ndaki g\u00f6r\u00fcnt\u00fcs\u00fc isi a\u015fa\u011f\u0131daki gibi olacakt\u0131r,<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n\r\n@{\r\n    WebGrid Tablo = new WebGrid(Model);\r\n    @Tablo.GetHtml();\r\n}\r\n<\/pre>\n<p>Ekran g\u00f6r\u00fcnt\u00fcs\u00fc,<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/GetHtml.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1631\" alt=\"GetHtml\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/GetHtml.png\" width=\"291\" height=\"98\" \/><\/a><\/p>\n<p><strong>Column<\/strong> = \u00dcstte g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi kolon adlar\u0131 kendili\u011finden s\u0131ral\u0131 olarak gelirler.Column \u00f6zelli\u011fini kullanarak istedi\u011fimiz s\u0131rada kolon adlar\u0131n\u0131 d\u00fczenleyebiliriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n\r\n@{\r\n    WebGrid Tablo = new WebGrid(Model);\r\n    @Tablo.GetHtml(\r\n    columns: Tablo.Columns(\r\n    Tablo.Column(&quot;ID&quot;),\r\n    Tablo.Column(&quot;Adi&quot;),\r\n    Tablo.Column(&quot;Soyadi&quot;),\r\n    Tablo.Column(&quot;EPosta&quot;)\r\n    )\r\n    );\r\n}\r\n<\/pre>\n<p><strong>canPage &#8211; rowsPerPage<\/strong> = &#8220;canPage&#8221; Sayfalamay\u0131 a\u00e7\u0131p kapatmaya yarar.&#8221;rowsPerPage&#8221; her sayfada ka\u00e7 veri g\u00f6r\u00fcnt\u00fclenece\u011fi ayarlan\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n\r\n@{\r\n    WebGrid Tablo = new WebGrid(Model, canPage: true, rowsPerPage: 1);\r\n    @Tablo.GetHtml();\r\n}\r\n<\/pre>\n<p>Yukar\u0131daki kodu incelerseniz e\u011fer, her sayfada 1 veri g\u00f6sterilmek \u015fart\u0131yla sayfalama i\u015flemi yap\u0131lacakt\u0131r.<br \/>\nEkran g\u00f6r\u00fcnt\u00fcs\u00fc,<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/canPage-RowsPerPage.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1633\" alt=\"canPage-RowsPerPage\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/canPage-RowsPerPage.png\" width=\"244\" height=\"74\" \/><\/a><\/p>\n<p><strong>Pager<\/strong> = Sayfalama i\u015flemi yap\u0131ld\u0131\u011f\u0131nda, sayfalama linklerinin \u00f6zelliklerini belirlememize yarar.<br \/>\nPrototipi a\u015fa\u011f\u0131daki gibidir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    WebGrid Tablo = new WebGrid();\r\n    Tablo.Pager(WebGridPagerModes mode, string firstText, string previousText, string nextText, string lastText, int numreicLinksCount);\r\n<\/pre>\n<ul>\n<li><span style=\"color: #993366;\">WebGridPagerModes <\/span>= Sayfalama i\u015fleminin nas\u0131l ger\u00e7ekle\u015fece\u011fi belirlenir.A\u015fa\u011f\u0131daki de\u011ferleri alabilir,<br \/>\n<em>FirstLast<\/em> : Sadece ilk ve son sayfa linkleri g\u00f6r\u00fcnt\u00fclenir.<br \/>\n<em>NextPrevious<\/em> : Sadece \u00f6nceki ve sonraki sayfa linkleri g\u00f6r\u00fcnt\u00fclenir.<br \/>\n<em>Numeric<\/em> : Sadece sayfa numaralar\u0131 g\u00f6sterilir.<br \/>\n<em>All<\/em> : Yukar\u0131daki b\u00fct\u00fcn \u00f6zellikler g\u00f6sterilir.\n<\/li>\n<li><span style=\"color: #993366;\">firstText<\/span>= \u0130lk sayfa yaz\u0131s\u0131.<\/li>\n<li><span style=\"color: #993366;\">previousText<\/span>= \u00d6nceki sayfa yaz\u0131s\u0131.<\/li>\n<li><span style=\"color: #993366;\">nextText<\/span>= Sonraki sayfa yaz\u0131s\u0131.<\/li>\n<li><span style=\"color: #993366;\">lastText<\/span>= Son sayfa yaz\u0131s\u0131.<\/li>\n<li><span style=\"color: #993366;\">numericLinksCount<\/span>= Sayfa numaras\u0131 say\u0131s\u0131.<\/li>\n<\/ul>\n<p>\u015eimdi bu \u00f6zellikleri programatik olarak inceleyelim.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n\r\n@{\r\n    WebGrid Tablo = new WebGrid(Model, canPage: true, rowsPerPage: 1);\r\n    @Tablo.Pager(WebGridPagerModes.All, &quot;\u0130lk Sayfa&quot;, &quot;\u00d6nceki Sayfa&quot;, &quot;Sonraki Sayfa&quot;, &quot;Son Sayfa&quot;);\r\n    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column(&quot;ID&quot;), Tablo.Column(&quot;Adi&quot;), Tablo.Column(&quot;Soyadi&quot;), Tablo.Column(&quot;EPosta&quot;)));\r\n}\r\n<\/pre>\n<p>Ekran g\u00f6r\u00fcnt\u00fcs\u00fc,<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/Pager.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/Pager.png\" alt=\"Pager\" width=\"245\" height=\"88\" class=\"aligncenter size-full wp-image-1636\" \/><\/a><\/p>\n<p><strong>DefaultSort<\/strong> = Varsay\u0131lan s\u0131ralama i\u015fleminin hangi kolona g\u00f6re yap\u0131laca\u011f\u0131n\u0131 belirtiriz.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n\r\n@{\r\n    WebGrid Tablo = new WebGrid(Model, defaultSort: &quot;ID&quot;);\r\n    @Tablo.Pager(WebGridPagerModes.All, &quot;\u0130lk Sayfa&quot;, &quot;\u00d6nceki Sayfa&quot;, &quot;Sonraki Sayfa&quot;, &quot;Son Sayfa&quot;,1);\r\n    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column(&quot;ID&quot;), Tablo.Column(&quot;Adi&quot;), Tablo.Column(&quot;Soyadi&quot;), Tablo.Column(&quot;EPosta&quot;)));\r\n}\r\n<\/pre>\n<p><strong>SortColumn<\/strong> = WebGrid nesnemizde s\u0131ralama i\u015fleminin yap\u0131ld\u0131\u011f\u0131 kolon ad\u0131n\u0131 geri d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n\r\n@{\r\n    WebGrid Tablo = new WebGrid(Model, defaultSort: &quot;ID&quot;);\r\n    @Tablo.Pager(WebGridPagerModes.All, &quot;\u0130lk Sayfa&quot;, &quot;\u00d6nceki Sayfa&quot;, &quot;Sonraki Sayfa&quot;, &quot;Son Sayfa&quot;,1);\r\n    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column(&quot;ID&quot;), Tablo.Column(&quot;Adi&quot;), Tablo.Column(&quot;Soyadi&quot;), Tablo.Column(&quot;EPosta&quot;)));\r\n    @Tablo.SortColumn\r\n}\r\n<\/pre>\n<p>Yukar\u0131daki kod blo\u011funu incelerseniz e\u011fer @Tablo.SortColumn kodu sayesinde s\u0131ralama yap\u0131lan kolon ad\u0131 geri d\u00f6necektir.<\/p>\n<p><strong>SortDirection<\/strong> = Verileri b\u00fcy\u00fckten k\u00fc\u00e7\u00fc\u011fe ya da k\u00fc\u00e7\u00fckten b\u00fcy\u00fc\u011fe s\u0131ralamay\u0131 ayarlayabiliriz.<br \/>\n\u0130kitane \u00f6zellik almaktad\u0131r.<br \/>\n<em>Ascending<\/em> = K\u00fc\u00e7\u00fckten b\u00fcy\u00fc\u011fe s\u0131ralar.<br \/>\n<em>Descending<\/em> = B\u00fcy\u00fckten k\u00fc\u00e7\u00fc\u011fe s\u0131ralar.<\/p>\n<p><strong>Row.Count<\/strong> = WebGrid nesnemizdeki toplam veri say\u0131s\u0131n\u0131 verir.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n@{\r\n    ViewBag.Title = &quot;Index&quot;;\r\n}\r\n\r\n@{\r\n    WebGrid Tablo = new WebGrid(Model, defaultSort: &quot;ID&quot;);\r\n    @Tablo.Pager(WebGridPagerModes.All, &quot;\u0130lk Sayfa&quot;, &quot;\u00d6nceki Sayfa&quot;, &quot;Sonraki Sayfa&quot;, &quot;Son Sayfa&quot;, 1);\r\n    @Tablo.GetHtml(columns: Tablo.Columns(Tablo.Column(&quot;ID&quot;), Tablo.Column(&quot;Adi&quot;), Tablo.Column(&quot;Soyadi&quot;), Tablo.Column(&quot;EPosta&quot;)));    \r\n}\r\n&lt;br \/&gt;\r\n@Html.Label(&quot;lblToplamVeri&quot;, &quot;Toplam veri say\u0131s\u0131 :&quot; + Tablo.Rows.Count.ToString())\r\n<\/pre>\n<p>Ekran g\u00f6r\u00fcnt\u00fcs\u00fc,<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/verisayisi.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2013\/05\/verisayisi.png\" alt=\"verisayisi\" width=\"282\" height=\"132\" class=\"aligncenter size-full wp-image-1640\" \/><\/a><\/p>\n<p>Asp.NET MVC 4.0 versiyonuyla gelen WebGrid nesnemizin \u00f6zelliklerini ve metodlar\u0131n\u0131 incelemi\u015f olduk.\u00c7ok detaya inmesekte genel bir g\u00f6zlem sayesinde nesnenin kullan\u0131labilirli\u011finden az \u00e7ok fikrimiz olmu\u015ftur.<\/p>\n<p>Evet..San\u0131r\u0131m ayn\u0131 \u015feyleri d\u00fc\u015f\u00fcn\u00fcyor ayn\u0131 isyan\u0131 bas\u0131yoruz.&#8221;Ulan nerede RowCommand, RowDataBound ,RowEditing eventlar\u0131, nerede GridView ruhu, nerde bu Microsoft&#8221; diye hayk\u0131r\u0131yoruz \ud83d\ude42<\/p>\n<p>Ama ger\u00e7ekler ac\u0131d\u0131r.Bir kere MVC event mant\u0131\u011f\u0131yla \u00e7al\u0131\u015fmad\u0131\u011f\u0131ndan dolay\u0131 bu hayk\u0131r\u0131\u015flar\u0131n ard\u0131ndan direkt 1 &#8211; 0 yenilgiyle suskunlu\u011fa devam ediyoruz \ud83d\ude42<\/p>\n<p>Neyse fazla edebiyata ba\u011flay\u0131p can s\u0131kmak istemem..<br \/>\nUmar\u0131m bir\u015feyler katabilmi\u015fimdir..<br \/>\nBir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere..<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar..<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Asp.NET Web Form mimarisinde hem g\u00f6r\u00fcn\u00fcrl\u00fck a\u00e7\u0131s\u0131ndan hem de i\u015flevsellik a\u00e7\u0131s\u0131ndan en iyi veri g\u00f6r\u00fcnt\u00fcleme kontrollerinden birisi GridView kontrol\u00fcd\u00fcr.Lakin mevzu Asp.NET MVC mimarisine gelince i\u015fin rengi de\u011fi\u015fiyor.MVC&#8217;yi ilk \u00f6\u011frenme a\u015famas\u0131nda, veri g\u00f6r\u00fcnt\u00fcleme yolu prosed\u00fcrel&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,345],"tags":[745,746,249,283,417],"class_list":["post-1623","post","type-post","status-publish","format-standard","hentry","category-asp-net-mvc","category-mvc-4-0","tag-asp-net","tag-asp-net-mvc","tag-gridview","tag-mvc","tag-webgrid"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=1623"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/1623\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=1623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=1623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=1623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}