<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>asp.net, jquery ve diğer web teknolojileri üzerine &#187; gridview</title>
	<atom:link href="http://www.apostylee.com/tag/gridview/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.apostylee.com</link>
	<description>asp.net, jquery ve diğer web teknolojileri üzerine, biraz da kişisel.</description>
	<lastBuildDate>Mon, 10 Oct 2011 11:49:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Repeater ile çalışmak</title>
		<link>http://www.apostylee.com/repeater-ile-calismak/</link>
		<comments>http://www.apostylee.com/repeater-ile-calismak/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 15:17:37 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[datalist]]></category>
		<category><![CDATA[döngü]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[repeater]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1007</guid>
		<description><![CDATA[Repeater asp.net aleminin bana göre en delikanlı kontrolüdür. Kafasından hiç bir şey yapmaz, biz ne dersek onu yapar. Bu sebepten dolayı veriyle ilgili kontrollerin en az özelliklisidir, hatta özelliği yoktur bile :) Madem hiç bir özelliği yok neden var bu kontrol ? Hemen anlatayım. Repeater&#8217; ın abisi olan DataList bir çok güzel özelliği üzerinde barındıran [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Repeater asp.net aleminin bana göre en delikanlı kontrolüdür. Kafasından hiç bir şey yapmaz, biz ne dersek onu yapar. Bu sebepten dolayı veriyle ilgili kontrollerin en az özelliklisidir, hatta özelliği yoktur bile :) Madem hiç bir özelliği yok neden var bu kontrol ? Hemen anlatayım.</p>
<p>Repeater&#8217; ın abisi olan DataList bir çok güzel özelliği üzerinde barındıran bir kontroldür. GridView ise bu iki kontrolden farklı bir mantıkta çalışır bu sebepten ötürü kulvarları çok farklıdır.  GridView veriyi satır satır (row) ekrana basar, DataList ve Repeater ise eleman elaman (item) basar. GridView&#8217; da DataList&#8217; de veriyi ekrana basarken kendi html şablonunu kullanır, Repeater ise hiç bir şablonu kullanmaz, etiketsiz, biçimsiz bir veri ekrana basar. Şöyleki, sanki bir döngü yazdınız ve veritabanından gelen saf veriyi ekrana bastınız. Bunun neresi güzel diye sorabilirsiniz. İstediğiniz gibi şekillendirebilirsiniz, kendiniz şekillendireceğiniz için w3 kurallarına uygun ve arama motorlarının sevdiği cinsten bir tasarım yapabilirsiniz. Burada şöyle bir durum da var, DataList ile 5 dakikada yapacağınız bir işi Repeater&#8217; la 25 dakikada yaparsınız. Arada ki fark ise birinde kurallara uygun bir tasarım ve tamamen kontrolü sizde olan bir tasarım, diğerinde ise kuralsız ve zaman zaman kontrolün sizde olmadığı bir tasarım. Bu sebepten dolayı, sitelerin kullanıcı arayüzünde Repeater, yönetici kısmında ise DataList kullanmak gerekiyor diye düşünüyorum.<span id="more-1007"></span></p>
<p>Aşağıda Repeater ve DataList&#8217; in html çıktılarını görüyorsunuz.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/RepeaterDatalist.jpg"><img class="alignnone size-large wp-image-1009" title="RepeaterDatalist" src="http://www.apostylee.com/wp-content/uploads/2010/10/RepeaterDatalist-481x600.jpg" alt="" width="481" height="600" /></a></p>
<p>Ön bir bilgi verdikten sonra Repeater kontrolümüzün az ama öz olan özelliklerine bir bakalım.</p>
<pre class="brush: xml; title: ; notranslate">
            &lt;asp:Repeater runat=&quot;server&quot; ID=&quot;rpRepeater&quot;&gt;
                &lt;HeaderTemplate&gt;
                    &lt;h3&gt;Header&lt;/h3&gt;
                &lt;/HeaderTemplate&gt;
                    &lt;ItemTemplate&gt;
                        &lt;%#Eval(&quot;browser&quot;) %&gt;
                    &lt;/ItemTemplate&gt;
                    &lt;SeparatorTemplate&gt;
                        &lt;hr /&gt;
                    &lt;/SeparatorTemplate&gt;
                    &lt;AlternatingItemTemplate&gt;
                        &lt;%#Eval(&quot;ip&quot;) %&gt;
                    &lt;/AlternatingItemTemplate&gt;
                &lt;FooterTemplate&gt;
                    &lt;h3&gt;Footer&lt;/h3&gt;
                &lt;/FooterTemplate&gt;
            &lt;/asp:Repeater&gt;
</pre>
<p><strong>HeaderTemplate</strong> En üst kısımda görünmesini istediğiniz içeriğin görüntüleneceği alan. Tekrar etmez.</p>
<p><strong>ItemTemplate</strong> Veri kaynağından gelecek veri kadar dönecek kısımdır. Verinin görüntüleneceği alandır. Veri kadar tekrar eder.</p>
<p><strong>SeparatorTemplate</strong> Veriler arasındaki kısımdır. Örneğin &#8220;Deneme | Deneme1 | Deneme2&#8243; | karakterteri separatordür. Veri kadar tekrar eder.</p>
<p><strong>AlternatingItemTemplate </strong>Alternatif veriyi gösteren kısımdır. Açıkçası şimdiye kadar hiç kullanmadığım bir özellik :) Veri kadar tekrar eder.</p>
<p><strong>FooterTemplate</strong> En alt kısımda görünmesini istediğimiz kısımdır. Genelde Sayfalama vb.. şeyleri burada gösterebiliriz. Tekrar etmez.</p>
<p>Aşağıda, yukarıda yazdıklarımı görebilirsiniz.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/repeater.jpg"><img class="alignnone size-large wp-image-1010" title="repeater" src="http://www.apostylee.com/wp-content/uploads/2010/10/repeater-600x439.jpg" alt="" width="600" height="439" /></a></p>
<p>Yukarıda gördüğümüz veriyi css kullanarak şekillendirelim.</p>
<pre class="brush: css; title: ; notranslate">
        body{font-size:12px;font-family:Arial}

        .repeaterEleman{
            border:2px solid #c0c0c0;
            background-color:#ededed;
            width:200px;
            height:200px;
            padding:5px;
            margin:5px;
            float:left;
        }

        .repeaterEleman p{
            font-weight:bold;
            text-align:right;
        }

        h3{
            background-color:#046a99;
            color:White;
            padding:5px;
        }
</pre>
<pre class="brush: xml; title: ; notranslate">
           &lt;asp:Repeater runat=&quot;server&quot; ID=&quot;rpRepeater&quot;&gt;
                &lt;HeaderTemplate&gt;
                    &lt;h3&gt;Ziyaretçi bilgileri listeleniyor.&lt;/h3&gt;
                &lt;/HeaderTemplate&gt;
                    &lt;ItemTemplate&gt;
                        &lt;div class=&quot;repeaterEleman&quot;&gt;
                            &lt;%#Eval(&quot;browser&quot;) %&gt;
                            &lt;p&gt;&lt;%#Eval(&quot;ip&quot;) %&gt;&lt;/p&gt;
                        &lt;/div&gt;
                    &lt;/ItemTemplate&gt;
                &lt;FooterTemplate&gt;
                    &lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;
                    &lt;h3&gt;Toplam &lt;%#rpRepeater.Items.Count%&gt; kayıt bulundu.&lt;/h3&gt;
                &lt;/FooterTemplate&gt;
            &lt;/asp:Repeater&gt;
</pre>
<p>Çıktımız bu şekilde.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/repeaterCss.jpg"><img class="alignnone size-large wp-image-1011" title="repeaterCss" src="http://www.apostylee.com/wp-content/uploads/2010/10/repeaterCss-600x561.jpg" alt="" width="600" height="561" /></a></p>
<p>Html çıktısı ise gördüğünüz gibi tertemiz.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/repeaterCssKaynak.jpg"><img class="alignnone size-large wp-image-1012" title="repeaterCssKaynak" src="http://www.apostylee.com/wp-content/uploads/2010/10/repeaterCssKaynak-600x572.jpg" alt="" width="600" height="572" /></a></p>
<p>Repeater ile ilgili yazacaklarım bu kadar, kullandıkça daha iyi kavrayacağınız bir kontrol. Herkese güzel ve sağlıklı günler..</p>
<div class="shr-publisher-1007"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/repeater-ile-calismak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GridView içindeki kontrole erişme (Findcontrol)</title>
		<link>http://www.apostylee.com/gridview-icindeki-kontrole-erisme-findcontrol/</link>
		<comments>http://www.apostylee.com/gridview-icindeki-kontrole-erisme-findcontrol/#comments</comments>
		<pubDate>Sat, 23 Oct 2010 07:27:51 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[checkbox]]></category>
		<category><![CDATA[findcontrol]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[hiddenfield]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[literal]]></category>
		<category><![CDATA[postback]]></category>
		<category><![CDATA[textbox]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=986</guid>
		<description><![CDATA[İki önceki yazımızda gridview içerisine templatefield içerisinde textbox eklemiştik. Bu yazımızda kontrol içerisindeki kontrollere nasıl erişebiliyoruz buna bakacağız. Konu bütünlüğü bozulmasın diye gridview içerisindeki kontrollere erişmeye çalışıp, çeşitli denemeler yapacağız. Örnekte kullnacağımız gridviewimiz şu şekilde. Bakalım elimizde neler var. Bir tane textbox, checkbox, literal ve butonumuz. Butonumuzu template field içerisine footertemplate ekleyerek gridimize ekliyoruz. Önceki [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>İki önceki <a href="http://www.apostylee.com/gridview-ile-calismak-ve-puf-noktalari/" target="_blank">yazımızda </a>gridview içerisine templatefield içerisinde textbox eklemiştik. Bu yazımızda kontrol içerisindeki kontrollere nasıl erişebiliyoruz buna bakacağız. Konu bütünlüğü bozulmasın diye gridview içerisindeki kontrollere erişmeye çalışıp, çeşitli denemeler yapacağız. Örnekte kullnacağımız gridviewimiz şu şekilde.</p>
<pre class="brush: xml; title: ; notranslate">
        &lt;asp:GridView runat=&quot;server&quot; ID=&quot;GridView1&quot; CssClass=&quot;grid&quot; ShowFooter=&quot;true&quot; AutoGenerateColumns=&quot;false&quot;&gt;
            &lt;HeaderStyle CssClass=&quot;header&quot; /&gt;
            &lt;RowStyle CssClass=&quot;row&quot; /&gt;
            &lt;AlternatingRowStyle CssClass=&quot;alternate&quot; /&gt;
            &lt;FooterStyle CssClass=&quot;footer&quot; /&gt;
            &lt;PagerStyle CssClass=&quot;pager&quot; /&gt;
            &lt;Columns&gt;
                &lt;asp:BoundField DataField=&quot;id&quot; HeaderText=&quot;Id&quot; /&gt;
                &lt;asp:BoundField DataField=&quot;tarih&quot; HeaderText=&quot;Tarih&quot; /&gt;
                &lt;asp:BoundField DataField=&quot;sessionid&quot; HeaderText=&quot;Oturum Kimliği&quot; /&gt;
                &lt;asp:TemplateField HeaderText=&quot;Bu bir checkbox&quot;&gt;
                    &lt;ItemTemplate&gt;
                        &lt;asp:CheckBox runat=&quot;server&quot; ID=&quot;cbCheckBox&quot; /&gt;
                    &lt;/ItemTemplate&gt;
                &lt;/asp:TemplateField&gt;
                &lt;asp:TemplateField HeaderText=&quot;Bu bir textbox&quot;&gt;
                    &lt;ItemTemplate&gt;
                        &lt;asp:TextBox runat=&quot;server&quot; ID=&quot;txtTextBox&quot; /&gt;
                    &lt;/ItemTemplate&gt;
                &lt;/asp:TemplateField&gt;
                &lt;asp:TemplateField HeaderText=&quot;Bu bir literal&quot;&gt;
                    &lt;ItemTemplate&gt;
                        &lt;asp:Literal runat=&quot;server&quot; ID=&quot;ltrLiteral&quot; Text='&lt;%#Eval(&quot;id&quot;) %&gt;' /&gt;
                    &lt;/ItemTemplate&gt;
                    &lt;FooterTemplate&gt;
                        &lt;asp:Button runat=&quot;server&quot; ID=&quot;btnGonder&quot; Text=&quot;Gönder&quot; OnClick=&quot;btnGonder_click&quot; /&gt;
                    &lt;/FooterTemplate&gt;
                 &lt;/asp:TemplateField&gt;
             &lt;/Columns&gt;
        &lt;/asp:GridView&gt;
</pre>
<p><span id="more-986"></span>Bakalım elimizde neler var. Bir tane textbox, checkbox, literal ve butonumuz. Butonumuzu template field içerisine footertemplate ekleyerek gridimize ekliyoruz. Önceki yazımızda footerrow kullanarak kod tarafında bu işlemi yapmıştık. Hemen basit bir giriş yapalım. Butona tıklandığında textbox a yazdığımız veriye erişelim.</p>
<pre class="brush: csharp; title: ; notranslate">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridViewDoldur();
        }
    }

    protected void GridViewDoldur() {
        GridView1.DataSource = db.DTGetir(&quot;Select top 10 * from EKOTEKNOBAYILOG order by id desc&quot;);
        GridView1.DataBind();
    }

    protected void btnGonder_click(object sender, EventArgs e)
    {
        TextBox txtGelenTextBox;
        // döngümüzü yazıyoruz, gridview1 içerisindeki satır sayısı kadar dönüyoruz.
        for (int i = 0; i &lt; GridView1.Rows.Count; i++)
        {
            // textbox ımız 4. hücrede yer aldğından findcontrol fonksiyonumuzu kullanarak içerisinde txtTextBox kontrolünü aratıyoruz.
            // olayımız bukadar. Findcontrolü kullanmak bu kadar. İster gridview içerisinde gridview olsun, repeater içerisinde gridview olsun, tüm kontrolleri bu şekilde buluyor ve kullabiliyoruz.
            txtGelenTextBox = (TextBox)GridView1.Rows[i].Cells[4].FindControl(&quot;txtTextBox&quot;);
            // sonrasında textboxımızı normal bildiğimiz şekilde kullanabiliyoruz. .text deyip içerisindeki değere ulaşıyoruz.
            Response.Write(txtGelenTextBox.Text+&quot;&lt;br /&gt;&quot;);
        }
    }
</pre>
<p>Textbox içerisine yazdığımız veriyi kolaylıkla aldık. Dikkat ettiyseniz kontrolümüzü döngünün dışında oluşturduk ve döngü içerisinde findcontrol ile bulduğumuz kontrole eşitledik. Oluşturma işini döngünün içerisinde de yapabilirdik fakat her döngüde bu işlemi yapmak gereksiz ve verimsiz olur. Küçük uygulamalarda bu performans farkını göremeyebilirsiniz fakat uygulama büyüdükçe ve kullanıcı sayısı arttıkça bu kazanımlar size yol su elektrik olarak geri dönecektir ;) Eğer sadece içersine veri girilen textboxları almak isterseniz, basit bir if yazarak bu işi yapabilirsiniz.</p>
<pre class="brush: csharp; title: ; notranslate">
// eğer boş değilse veriyi ekrana basıyoruz.
if(!string.IsNullOrEmpty(txtGelenTextBox.Text))
        Response.Write(txtGelenTextBox.Text+&quot;&lt;br /&gt;&quot;);
</pre>
<p>Şimdide şöyle bir örnek yapalım. Hangi checkbox işaretliyse onun karşısındaki literal içindeki veriyi alalım.</p>
<pre class="brush: csharp; title: ; notranslate">
    protected void btnGonder_click(object sender, EventArgs e)
    {
        CheckBox cbGelen;
        Literal ltrGelen;
        for (int i = 0; i &lt; GridView1.Rows.Count; i++)
        {
            cbGelen = (CheckBox)GridView1.Rows[i].Cells[3].FindControl(&quot;cbCheckBox&quot;);
            if (cbGelen.Checked)
            {
                ltrGelen = (Literal)GridView1.Rows[i].Cells[5].FindControl(&quot;ltrLiteral&quot;);
                Response.Write(ltrGelen.Text+&quot;&lt;br /&gt;&quot;);
            }
        }
    }
</pre>
<p>Textbox ı nasıl yakaladıysak checkbox ıda aynı şekilde yakalıyor ve basit bir if le seçili olan satırdaki literal içerisindeki veriyi alıyoruz. Mesela if bloğunun içerisine GridView1.Rows[i].BackColor = System.Drawing.Color.Red; ifadesini yazarsak seçilen satırların arka plan rengi kırmızı olur. Peki sayfa postBack olmadan seçilen satırların arkaplanlarını değiştirebilirmiyiz, tabiki değiştirebiliriz. Bu iş için jQuery ile ufak bir kod yazmamız yeterli. Hatta birde kaç tane satırın seçildiğinide yazalım. Bu iş için sayfamızda görünmesini istediğimiz bir yere &lt;span id=&#8221;secilenSatirSayisi&#8221;&gt;&lt;/span&gt; ekleyelim. Sonrasında aşağıdaki kodu yazalım.</p>
<pre class="brush: jscript; title: ; notranslate">
    &lt;script type=&quot;text/javascript&quot;&gt;
        $(document).ready(function() {
            var secilenler = 0;
            $(&quot;.grid input[type=checkbox]&quot;).change(function() {
                if ($(this).attr(&quot;checked&quot;)) {
                    $(this).parent().parent().attr(&quot;style&quot;, &quot;background-color:#50909a&quot;);
                    secilenler++;
                }
                else {
                    $(this).parent().parent().removeAttr(&quot;style&quot;);
                    secilenler--;
                }
                $(&quot;#secilenSatirSayisi&quot;).fadeOut().fadeIn().text(secilenler+&quot; satır seçildi.&quot;);
            });
        })
    &lt;/script&gt;
</pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/secilensatirlarjquery.png"><img class="alignnone size-large wp-image-987" title="secilensatirlarjquery" src="http://www.apostylee.com/wp-content/uploads/2010/10/secilensatirlarjquery-600x282.png" alt="" width="600" height="282" /></a></p>
<p>Gördüğünüz üzere çok basit bir şekilde kontrollerimize eriştik ve istediğimiz işlemleri basit basit hallettik. Son olarak da jQuery ile biraz aksiyon kattık. Umarım faydalı olmuştur, herkese kolaylıklar dilerim.</p>
<div class="shr-publisher-986"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/gridview-icindeki-kontrole-erisme-findcontrol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GridView ile çalışmak ve püf noktaları</title>
		<link>http://www.apostylee.com/gridview-ile-calismak-ve-puf-noktalari/</link>
		<comments>http://www.apostylee.com/gridview-ile-calismak-ve-puf-noktalari/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 08:46:44 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[csss]]></category>
		<category><![CDATA[footer]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[header]]></category>
		<category><![CDATA[ipucu]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[row]]></category>
		<category><![CDATA[sayfalama]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=958</guid>
		<description><![CDATA[Uzun bir aradan sonra kontrollerimizi tanımaya kaldığımız yerden devam ediyoruz. Ana hatlarıyla anlatmaya çalışacağım kontrol namı diğer GridView1 :) Çok fazla detaya girmeden en sık kullanılan özelliklerini ve jQuery ile birlikte neler yapabileceğimize vakit kaybetmeden bir göz atalım. GridView, bir veri kaynağından gelen veriyi ekrana liste şeklinde basan kontrolümüz. Bir çok yerde kullandığımız bu kontrolde, sayfalama ve sıralama işlemlerini rahatlıkla yapabiliyoruz. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Uzun bir aradan sonra <a href="http://www.apostylee.com/asp-net-kontrolleri-bolum-1/" target="_blank">kontrollerimizi</a> tanımaya kaldığımız yerden devam ediyoruz. Ana hatlarıyla anlatmaya çalışacağım kontrol namı diğer GridView1 :) Çok fazla detaya girmeden en sık kullanılan özelliklerini ve jQuery ile birlikte neler yapabileceğimize vakit kaybetmeden bir göz atalım.</p>
<p>GridView, bir veri kaynağından gelen veriyi ekrana liste şeklinde basan kontrolümüz. Bir çok yerde kullandığımız bu kontrolde, sayfalama ve sıralama işlemlerini rahatlıkla yapabiliyoruz.<span id="more-958"></span></p>
<p>Kontrolümüzü <strong>&lt;asp:GridView runat=&#8221;server&#8221; ID=&#8221;GridView1&#8243;&gt;&lt;/asp:GridView&gt; </strong>şeklinde ekliyoruz.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-varsayilan.jpg"><img class="alignnone size-large wp-image-966" title="gridview-varsayilan" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-varsayilan-600x441.jpg" alt="" width="600" height="441" /></a></p>
<p>Gridimizi şekillendirmek için ana hatlara sitil tanımlaması yapabiliyoruz. Nedir bu ana hatlar, <strong>header</strong>, <strong>row</strong>, <strong>footer</strong> ve <strong>pagerstyle</strong>. Bunları elle manuel stil tanımlaması yapabildiğimiz gibi style classı da atayabiliyoruz. Eğer elle stil yazarsak gridimizi oluşturan html çıktısında fazlasıyla kod tekrarı olur, bu ve yönetilebilirlikten dolayı class atamak en performanslı çözüm olacaktır.</p>
<pre class="brush: xml; title: ; notranslate">
    &lt;asp:GridView runat=&quot;server&quot; ID=&quot;GridView1&quot;&gt;
        &lt;HeaderStyle/&gt;
        &lt;RowStyle/&gt;
        &lt;AlternatingRowStyle/&gt;
        &lt;FooterStyle/&gt;
        &lt;PagerStyle/&gt;
    &lt;/asp:GridView&gt;
</pre>
<p>Şeklinde gridimizi oluşturuyoruz, sonrasında herbir kalıp için css mizi yazıyoruz.</p>
<pre class="brush: css; title: ; notranslate">
    &lt;style type=&quot;text/css&quot;&gt;
        body{font-size:12px;font-family:Arial}
        /* GridView */
        .grid caption, tbody, tfoot, thead, tr, th, td,form {
	        margin: 0;
	        padding: 2px;
	        border: 0;
	        outline: 0;
	        color:#333;
	        font-size:12px;
        }
        .grid a:hover{color:#008aeb}
        .grid{border:none;width:100%;}
        .grid .header{background-color:#e5e5e5;height:30px;cursor:pointer;text-align:left}
        .grid .pager table{background-color:#333333;margin:5px auto}
        .grid .pager table td{font-size:15px;background-color:#3e3e3e}
        .grid .pager table td span{display:block;width:25px;height:20px;text-align:center;color:#868686;background-color:#333333}
        .grid .pager table td a{display:block;width:25px;height:20px;text-align:center;color:White}
        .grid .pager table td a:hover{background-color:#333333}
        .grid .row{}
        .grid .alternate{background-color:#f6f6f6;}
        .grid .alternate:hover,.grid .row:hover{background-color:#a8a8a8;cursor:pointer;}
        .grid .footer{background-color:#e3f1f8;font-weight:bold;}
    &lt;/style&gt;
</pre>
<p>Son olarak gridimize class ları veriyoruz ve sitil olayını sonlandırıyoruz.</p>
<pre class="brush: xml; title: ; notranslate">
    &lt;asp:GridView runat=&quot;server&quot; ID=&quot;GridView1&quot; CssClass=&quot;grid&quot;&gt;
        &lt;HeaderStyle CssClass=&quot;header&quot; /&gt;
        &lt;RowStyle CssClass=&quot;row&quot; /&gt;
        &lt;AlternatingRowStyle CssClass=&quot;alternate&quot; /&gt;
        &lt;FooterStyle CssClass=&quot;footer&quot; /&gt;
        &lt;PagerStyle CssClass=&quot;pager&quot; /&gt;
    &lt;/asp:GridView&gt;
</pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-css.jpg"><img class="alignnone size-large wp-image-959" title="gridview-css" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-css-600x298.jpg" alt="" width="600" height="298" /></a></p>
<p>Gördüğünüz gibi çok kolay bir şekilde gridimizi şekillendirdik. Hız kesmeden birde sayfalama işleminin nasıl yapıldığına bir bakalım. Bunun için ilk önce gridimizin sayfalama özelliğini <strong>AllowPaging=&#8221;true&#8221;</strong> diyerek aktif ediyoruz. Sonrasında olaylar (events) kısmından <strong>onpageindexchanging </strong>olayına çift tıklıyor ve ilgili olayı gerçekleştirecek methodu oluşturuyoruz. Kodumuz şu şekilde..</p>
<pre class="brush: csharp; title: ; notranslate">
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex; // yeni sayfa indexini gridimizin PageIndex değerine setliyoruz.
        GridViewDoldur(); //gridimizi tekrar dolduruyoruz.
    }
    </pre>
<p>Kodlarımızın tamamı şu şekilde.</p>
<pre class="brush: xml; title: ; notranslate">
        &lt;asp:GridView runat=&quot;server&quot; ID=&quot;GridView1&quot; CssClass=&quot;grid&quot; AllowPaging=&quot;true&quot; onpageindexchanging=&quot;GridView1_PageIndexChanging&quot;&gt;
            &lt;HeaderStyle CssClass=&quot;header&quot; /&gt;
            &lt;RowStyle CssClass=&quot;row&quot; /&gt;
            &lt;AlternatingRowStyle CssClass=&quot;alternate&quot; /&gt;
            &lt;FooterStyle CssClass=&quot;footer&quot; /&gt;
            &lt;PagerStyle CssClass=&quot;pager&quot; /&gt;
        &lt;/asp:GridView&gt;
    </pre>
<pre class="brush: csharp; title: ; notranslate">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridViewDoldur();
        }
    }

    protected void GridViewDoldur() {
        GridView1.DataSource = db.DTGetir(&quot;Select top 100 * from EKOTEKNOBAYILOG order by id desc&quot;);
        GridView1.DataBind();
    }

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridViewDoldur();
    }
    </pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-sayfalama.jpg"><img class="alignnone size-large wp-image-964" title="gridview-sayfalama" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-sayfalama-600x330.jpg" alt="" width="600" height="330" /></a></p>
<p>2 satırda sayfalama işlemimizide yapmış olduk. Bu şekilde ki bir sayfalama işlemi küçük projelerde rahatlıkla kullanılabilir fakat kayıt sayısı arttıkça performansda düşer. Neden düşer ? Çünkü ilk anda veri kaynağındaki tüm veriyi önce gridimize yüklüyoruz ve sayfalamayı grid içerisinde yapıyoruz. Bu durumun tersi olması durumunda performans artacaktır. Şimdide footer yani gridin en alt kısmının kullanıma bir bakalım. Neden footer kullanmamız lazım onuda hemen söyleyeyim. İlk sebep, hizalama problemlerinin çıkmaması ve haliyle çok daha derli toplu bir görüntü elde etmemiz. İkinci ve bence en önemlisi sebep ise gridview içerisindeki veriyi word, excel yada farklı bir formatta dışarı aktarmak istediğimizde hiç bir tasarımsal sıkıntının doğmaması. Footerı göstermek için ilk önce <strong>ShowFooter=&#8221;true&#8221;</strong> yapıyoruz. Artık footerimizi kullanabiliriz. Mantığını anlamak adına bir örnek yapalım.</p>
<pre class="brush: csharp; title: ; notranslate">
    protected void GridViewDoldur() {
        GridView1.DataSource = db.DTGetir(&quot;Select top 10 * from EKOTEKNOBAYILOG order by id desc&quot;);
        GridView1.DataBind();

        decimal toplamSayi = 0; //burada basit bir toplama işlemi yapıyoruz. 6. sutundaki verileri alt alta topluyoruz.
        for (int i = 0; i &lt; GridView1.Rows.Count; i++)
        {
            toplamSayi += Convert.ToDecimal(GridView1.Rows[i].Cells[6].Text);
        }

        GridView1.FooterRow.Cells[3].Text = &quot;Toplam: &quot; + GridView1.Rows.Count + &quot; kayıt.&quot;; // kaçtane kayıt olduğunu footerımızın 3. sutununa yazıyoruz.
        GridView1.FooterRow.Cells[6].Text = toplamSayi.ToString(); // topladığımız değerleri footerdaki 6. sutuna yazıyoruz.
    }
    </pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-footer.jpg"><img class="alignnone size-large wp-image-960" title="gridview-footer" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-footer-600x330.jpg" alt="" width="600" height="330" /></a></p>
<p>Görüldüğü üzere footer kullanımıda oldukça basit. Herşey gayet derli toplu ve kontrolümüz altında. Şuana kadar ki örneklerimizi gridviewımızı otomatik doldurarak yaptık, şimdide veri kaynağından gelen veriyi nasıl özelleştirebiliriz buna bir bakalım. İlk önce sutunlarımızı kişiselleştirip istediğimiz sutunları alalım. Bu işlem için önce <strong>AutoGenerateColumns=&#8221;false&#8221;</strong> yapmamız gerekiyor, bunun nedenide bu işlemi biz manuel olarak elle yapacak olmamız. Örnekte kendi verikaynağımdaki isimleri kullanacağım</p>
<pre class="brush: xml; title: ; notranslate">
        &lt;asp:GridView runat=&quot;server&quot; ID=&quot;GridView1&quot; CssClass=&quot;grid&quot; ShowFooter=&quot;true&quot; AutoGenerateColumns=&quot;false&quot;&gt;
            &lt;HeaderStyle CssClass=&quot;header&quot; /&gt;
            &lt;RowStyle CssClass=&quot;row&quot; /&gt;
            &lt;AlternatingRowStyle CssClass=&quot;alternate&quot; /&gt;
            &lt;FooterStyle CssClass=&quot;footer&quot; /&gt;
            &lt;PagerStyle CssClass=&quot;pager&quot; /&gt;

            &lt;Columns&gt;
                &lt;asp:BoundField DataField=&quot;id&quot; HeaderText=&quot;Id&quot; /&gt;
                &lt;asp:BoundField DataField=&quot;tarih&quot; HeaderText=&quot;Tarih&quot; /&gt;
                &lt;asp:BoundField DataField=&quot;sessionid&quot; HeaderText=&quot;Oturum Kimliği&quot; /&gt;
            &lt;/Columns&gt;

        &lt;/asp:GridView&gt;
    </pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-manuelsutun.jpg"><img class="alignnone size-large wp-image-963" title="gridview-manuelsutun" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-manuelsutun-600x193.jpg" alt="" width="600" height="193" /></a></p>
<p>Gördüğünüz üzere <strong>Columns </strong>adında bir bölüm oluşturup altına istediğimiz sutunları tanımladık. Şimdi verimizi biçimlendirelim (format). Ne demek bu ? Tarih, sayı vb.. verileri kendi ihtiyacımız doğrultusunda düzenleyebilmemize olanak sağlayan yapılardır. Örneğin; veritabanından gün/ay/yıl şeklinde gelen bir tarihi ay.gün.yıl şekline çevirmek gibi.. Burada şöyle bir püf noktası bulunuyor, verikaynağında ki veri tipinin tarih yada sayı olması gerekiyor. Yani veri kaynağında string şeklindeki bir tarihe yada sayıya direk biçimlendirme yapamıyoruz. Kendi oluşturduğumuz sutunlarda DataFormatString özelliğini kullanarak çok kolay bir şekilde istediğimiz biçimlendirmeyi rahatlıkla yapabiliyoruz. <strong>DataFormatString</strong>=&#8221; 0:n}&#8221;, DataFormatString=&#8221;{0:MM.dd.yyyy}&#8221; gibi.. Biçimlendirme işlemleri ve parametleri hakkında <a href="http://www.csharpnedir.com/articles/read/?filter=&amp;author=86&amp;cat=cs&amp;id=486&amp;title=String.Format%20Fonksiyonu" target="_blank">burayı</a> ziyaret edebilirsiniz.</p>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-format.jpg"><img title="gridview-format" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-format-600x193.jpg" alt="" width="600" height="193" /></a></p>
<p>Herşey iyi güzel ama verikaynağında olmayan bir alanı gridimize nasıl ekleyeceğiz diye sorabilirsiniz. Bu noktada imdadımıza <strong>TemplateField </strong>koşuyor. Hemen örneğimize bakalım.</p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;">
<pre class="brush: xml; title: ; notranslate">&lt;/span&gt;
&lt;pre&gt;
        &lt;asp:GridView runat=&quot;server&quot; ID=&quot;GridView1&quot; CssClass=&quot;grid&quot; AutoGenerateColumns=&quot;false&quot;&gt;
            &lt;HeaderStyle CssClass=&quot;header&quot; /&gt;
            &lt;RowStyle CssClass=&quot;row&quot; /&gt;
            &lt;AlternatingRowStyle CssClass=&quot;alternate&quot; /&gt;
            &lt;FooterStyle CssClass=&quot;footer&quot; /&gt;
            &lt;PagerStyle CssClass=&quot;pager&quot; /&gt;
            &lt;Columns&gt;
                &lt;asp:BoundField DataField=&quot;id&quot; HeaderText=&quot;Id&quot; /&gt;
                &lt;asp:BoundField DataField=&quot;tarih&quot; HeaderText=&quot;Tarih&quot; /&gt;
                &lt;asp:BoundField DataField=&quot;sessionid&quot; HeaderText=&quot;Oturum Kimliği&quot; DataFormatString=&quot;{0:n}&quot; /&gt;
                &lt;asp:TemplateField HeaderText=&quot;Bu bir textbox&quot;&gt;
                    &lt;ItemTemplate&gt;
                        &lt;asp:TextBox runat=&quot;server&quot; ID=&quot;TextBox1&quot; /&gt;
                    &lt;/ItemTemplate&gt;
                &lt;/asp:TemplateField&gt;
                &lt;asp:TemplateField HeaderText=&quot;Bu bir literal&quot;&gt;
                    &lt;ItemTemplate&gt;
                        &lt;asp:Literal runat=&quot;server&quot; ID=&quot;Literal1&quot; Text='&lt;%#Eval(&quot;id&quot;) %&gt;' /&gt;
                    &lt;/ItemTemplate&gt;
                &lt;/asp:TemplateField&gt;
                &lt;asp:TemplateField&gt;
                    &lt;ItemTemplate&gt;
                        &lt;a href=&quot;&quot;&gt;Detay&lt;/a&gt;
                    &lt;/ItemTemplate&gt;
                &lt;/asp:TemplateField&gt;
            &lt;/Columns&gt;
        &lt;/asp:GridView&gt;
</pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-template.jpg"><img class="alignnone size-large wp-image-965" title="gridview-template" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-template-600x201.jpg" alt="" width="600" height="201" /></a></p>
<p>Yukarıda da gördüğünüz gibi TemplateField içine ItemTemplate ile istediğimiz kontrolü yada herhangi birşeyi rahatlıkla girdik. Burada dikkat ederseniz Eval(&#8220;id&#8221;) şeklinde bir kullanım gerçekleştirdik. Eval veri kaynağımızdan manuel bir şekilde veriyi gridimizin içine çekmemize olanak sağlayan bir fonksiyon. Şöyle bir soru gelebilir buraya textbox ları ekledik fakat içerisindeki veriyi nasıl alabiliriz ? Bu sorunun cevabını bir sonraki yazımda yazacağım.</p>
<p>Gridview in çok fazla özelliği bulunuyor. Bu özelliklere verileri güncelleme ve silme gibi olaylarda dahil fakat ben bu özelliğin kullanılmasını çok sağlıklı bulmuyorum. Neden bulmuyorum, çünkü sayfa yeniden yükleniyor, haliyle griddeki  verilerde yeniden yükleniyor, bu son son derece gereksiz ve verimsiz. Bu düzenleme işlemi için hem grid tarafında hemde kod tarafına bir sürü kod yazmamızın gerekmeside ayrı bir handikap. Düzenleme işlemi için jQuery ile veriyi olduğu yerde düzenleme (inline edit) yöntemini hem daha kolay kullanılabilir hemde maliyetinin daha az olduğunu düşünüyorum. Bu konuyu ilerleyen günlerde ele alacağım. Dipnot olarak burada dursun istedim.</p>
<p>Footer ile ilgili aklıma bir şey daha geldi. Gridimize footer ekledik fakat patronumuz yada iş verenimiz bize footerin aynısının headerında üstünde olmasını istedi. Böyle bir istek neden gelir ? Gridimizde çok fazla satır olduğunu düşünürsek, alt toplamlar yada diğer bilgilere erişmek için kullanıcı sayfayı dibe kadar çekmek zorunda kalacaktır. Bu işi yapmanın bir çok yolu bulunuyor. Tabiri caizse bir gumul kodun yazılacağı çok can sıkıcı bir durumdur bu. Bu noktada imdadımıza jQuery yetişiyor. Hemde ne yetişme, bir satırda olayı çözüyoruz. Footerımıza bir class atamıştık, ilk önce footerımızı seçiyoruz sonrasında klonluyoruz (<a href="http://api.jquery.com/clone/" target="_blank">clone</a>) ve headerımızın önüne ekliyoruz. Bu sayede footerda değişiklikler olduğunda aynen headerada uygulanmış oluyor. Sürekli footera ayrı kod headerdakine ayrı kod yazmaktan kurtulmuş oluyoruz.</p>
<pre class="brush: xml; title: ; notranslate">
    &lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
    &lt;script type=&quot;text/javascript&quot;&gt;
        $(document).ready(function() {
            $(&quot;.grid .header&quot;).before(&quot;&lt;tr class='footer'&gt;&quot; + $(&quot;.grid .footer&quot;).clone().html() + &quot;&lt;/tr&gt;&quot;);
        })
    &lt;/script&gt;
    </pre>
<p><a href="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-footerclon.jpg"><img class="alignnone size-large wp-image-961" title="gridview-footerclon" src="http://www.apostylee.com/wp-content/uploads/2010/10/gridview-footerclon-600x322.jpg" alt="" width="600" height="322" /></a></p>
<p>Gridview ile ilgili yazacaklarım şimdilik bu kadar, umarım anlaşılır bir yazı olmuştur. Yukarıda da belirttiğim gibi gridview ile ilgili yazacak çok fazla şey bulunuyor. Ben en ana hatlarıyla ve en sık kullanılan özelliklerini anlatmaya çalıştım. İlerleyen günlerde daha farklı özelliklerini ele almaya çalışacağım, herkese kolay gelsin.</p>
<div class="shr-publisher-958"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/gridview-ile-calismak-ve-puf-noktalari/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>GridView Satırlarını tıklayınca genişletmek (Expand Rows)</title>
		<link>http://www.apostylee.com/gridview-satirlarini-tiklayinca-genisletmek-expand-rows/</link>
		<comments>http://www.apostylee.com/gridview-satirlarini-tiklayinca-genisletmek-expand-rows/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 16:35:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[expand rows]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://gridview-satirlarini-tiklayinca-genisletmek-expand-rows-.html</guid>
		<description><![CDATA[Nedenini bilmiyorum ama başlığı seçerken epeyce zorlandım, neyse ki bir tane buldum :) Konumuza dönelim, GridView kontrolünde verileri listeletirken ilgili satırın altında ilişkili diğer kayıtları göstermemiz gerekebiliyor. Bu sayede kullanıcıya çok işlevsel bir listeleme yapabiliyoruz. Bu işlem için genelde kullanılan yöntem; tüm verilerin tümünün çekilip sonra javascript kullanarak göster-gizle şeklinde gösterilmesi. Bu yöntemde ciddi anlamda performans sıkıntısı yaşarız çünkü 40 tane [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Nedenini bilmiyorum ama başlığı seçerken epeyce zorlandım, neyse ki bir tane buldum :) Konumuza dönelim, GridView kontrolünde verileri listeletirken ilgili satırın altında ilişkili diğer kayıtları göstermemiz gerekebiliyor. Bu sayede kullanıcıya çok işlevsel bir listeleme yapabiliyoruz. Bu işlem için genelde kullanılan yöntem; tüm verilerin tümünün çekilip sonra javascript kullanarak göster-gizle şeklinde gösterilmesi. Bu yöntemde ciddi anlamda performans sıkıntısı yaşarız çünkü 40 tane kaydımız olsa ve bu kayıtlara ait 5&#8242; er de alt kayıt olsa ilk seferde toplam 200 kayıt listelemiş oluyoruz. Anlatacağım yöntemde bu işi jQuery Ajax ile birlikte verimli ve efektif bir şekilde çözeceğiz. (Bugün çok değişik bir gün sanırım havalardan kaynaklanıyor, anlatım bozukluğu varsa kusuruma bakmayın) Mekanızmamız iki adet .aspx sayfasından oluşuyor. Birincisi normal kayıtlarımızı listelettiğimiz <strong>GridGenislet.aspx </strong>diğeri ise üzerine tıklayınca açılacak olan kısmın bilgilerini getiren <strong>Genisle.aspx </strong><strong>GridGenislet.aspx </strong>sayfamızın ilgili kodlarına bakalım. Burada jQuery ile açılıp kapanma işlemi sırasında oluşacak efekt işini ve Genisle.aspx sayfamıza Ajax ile ilgili kayıtların gelmesini sağlayacak fonksiyonumuzu yazıyoruz. Sonrada Tümünü Göster ve Tümünü Gizle olayını ekledim. Sırf jQuery i biraz daha algılayabilmek adına :)</p>
<pre class="brush: jscript; title: ; notranslate">	$(document).ready(function(){
		$('a#tgizle').click( tumunuGizle );
		$('a#tgoster').click( tumunuGoster );
	});

	function tumunuGizle(){
	    $('div.genisleyenDiv').slideUp();
	}

	function tumunuGoster(){
	    $(&quot;div.genisleyenDiv&quot;).each(function()
        {
           goster($(this).attr('id'));
        });
	}
	//can damarımız burdaki fonksyion, genisle.aspx e id bilgisini gönderip sayfamızda gösteriyoruz.
	function goster(divId)
	{
		$('div#'+divId).toggle('slow');
		$('div#'+divId).load('Genisle.aspx?Id='+divId);
	}
</pre>
<p><strong>GridGenislet.aspx.cs </strong>sayfamızın ilgili kodlarına bakalım.</p>
<pre class="brush: xml; title: ; notranslate">
	DataTable dt = veritabani.DataTableGetir(&quot;Select top 10 id,baslik,icerik,tarih from yazilar&quot;);
	GridView1.DataSource = dt;
	GridView1.DataBind();

	for (int i = 0; i &amp;lt; GridView1.Rows.Count; i++)
	{
		//burada hersatırın onclick özelliğine goster fonksiyonumuzu atıyoruz ve ilgili id yi yazdırıyoruz.
	    GridView1.Rows[i].Cells[0].Attributes.Add(&quot;onclick&quot;, &quot;goster('&quot; + dt.Rows[i][0].ToString() + &quot;')&quot;);
	}
</pre>
<p><strong>Genisle.aspx </strong>sayfamızda ise gelen id değerini alıp sql cümlemizdeki yerine koyuyor ve listeletiyoruz. Burdaki yöntemde ben GridView üzerine anlatmaya çalışıyorum, mantığı anlarsanız çoğu yerde bu mekanizmayı kullanabilirsiniz.</p>
<p>Sadece dilimin döndüğünce mantığı anlatmaya çalıştım, eğer isteyen olursa çalışır kodları da paylaşabilirim. Çalışan örneği görmek için <strong><a href="http://aspx.apostylee.com/gridGenislet.aspx" target="_blank"><span style="color: #ff0000;">tıklayın</span></a></strong>. Zaman problemim nedeniyle css ile süsleyemedim, istendiği taktirde çok şık bir görünüm verilebilir. Herkese güzel günler diliyor ve konuyu burada noktalıyorum.</p>
<div class="shr-publisher-171"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/gridview-satirlarini-tiklayinca-genisletmek-expand-rows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>GridView ve Modal Popup Extender ile birlikte çalışma</title>
		<link>http://www.apostylee.com/gridview-ve-modal-popup-extender-ile-birlikte-calisma/</link>
		<comments>http://www.apostylee.com/gridview-ve-modal-popup-extender-ile-birlikte-calisma/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 10:34:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[modal popup extender]]></category>

		<guid isPermaLink="false">http://gridview-ve-modal-popup-extender-ile-birlikte-calisma.html</guid>
		<description><![CDATA[Ajax uygulamaları artık web sayfalarının olmazsa olmazlarından, Asp.Net ile birlikte  Ajax Control Toolkit ile birlikte ajaxın nimetlerinden en iyi ve rahat şekilde faydalanmamız hedeflenmiş. Bu yazımda Modal Popup Extender ile GridView satırında bulunan kaydın id si ile birlikte nasıl işlerimizi yürüteceğimizi anlatmaya çalışacağım. Bu konuda beni bilgilendiren Yunus Emre ye sonsuz teşekkürlerimi sunuyorum. Burada Modal Popup kontrolüne ait bilgiler bulunuyor. Klasik kullanımı [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Ajax uygulamaları artık web sayfalarının olmazsa olmazlarından, Asp.Net ile birlikte  <strong><a href="http://ajaxcontroltoolkit.com/">Ajax Control Toolkit</a></strong> ile birlikte ajaxın nimetlerinden en iyi ve rahat şekilde faydalanmamız hedeflenmiş. Bu yazımda<span style="text-decoration: none;"><img src="http://www.apostylee.com/resimler/modalbox.png" border="0" alt="" align="right" /></span> <strong>Modal Popup Extender </strong>ile <strong>GridView</strong> satırında bulunan kaydın id si ile birlikte nasıl işlerimizi yürüteceğimizi anlatmaya çalışacağım. Bu konuda beni bilgilendiren <strong>Yunus Emre </strong>ye sonsuz teşekkürlerimi sunuyorum.</p>
<p><a href="http://ajaxcontroltoolkit.com/ModalPopup/ModalPopup.aspx" target="_blank"> Burada</a><span style="text-decoration: none;"> Modal Popup kontrolüne ait bilgiler bulunuyor. Klasik kullanımı oldukça basit olan bu kontrolü GridView gibi kayıtların listelendiği nesnelerde kullanmak için farklı yöntemler kullanmak gerekiyor. Bu yöntemde aptal buton adı verilen bir buton kullanıp, modal popupu bir nevi kandırıp hata vermemesini sağlıyacağız. </span>Modal Popupumuzun güzel görünmesi için gerekli olan <strong>sitil</strong> kodlarımız.</p>
<pre class="brush: xml; title: ; notranslate">
.popupArka{
    background-color:#333;
    filter:alpha(opacity:90);
}

.popupKapat{
    text-align:right;
    background-color:#706c6c;
    padding:2px;
    border-bottom:1px solid #c0c0c0;
}

.popupKapat input{
    font-weight:bold;
    width:25px;
    height:25px;
}

.popupKapat span{
    float:left;
    font-size:18px;
    color:White;
    font-weight:bold;
}
</pre>
<p>Üstten aşşağıya doğru açıklamaya çalışayım. ScriptManager ajax kontrollerinin çalışması için gerekli olan mekanızmamız. UpdatePanel, içerisinde olayların ajax kullanılarak gerçekleşeceği alan. Yani burada sayfamız yenilenmeden işlemlerimiz gerçekteşecek. GridView bildiğimiz Grid :) burda dikkat etmemiz gereken noktalar <strong>onrowcommand=&#8221;GridView1_RowCommand&#8221;</strong> burdaki ifadeyi aşşağıdaki kodlarda görebilirsiniz. TemplateField içinde bir adet LinkButon&#8217; umuz bulunuyor. Bunu normal buton imagebuton şeklinde de değiştirebilirsiniz. Buna tıklandığında modalboxumuz açılacak. Burdaki önemli nokta  <strong>CommandName=&#8221;Detay&#8221;</strong> ve <strong>ommandArgument=&#8217;gidecekDeğer&#8217;</strong> Aşşağıya indiğimizde modal boxun kendisini görüyoruz. İçinde sitil ve diğer tanımlamalarımız bulunuyor. Bu tanımlamalardan biride yukarda bahsettiğim aptalbuton. Hemen altta ise <strong>panel</strong>&#8216; imizi panelimizi görüyoruz. ModalPopup bu paneli bize gösterecek. Belki biraz karışık bir anlatım oldu ama örneği uygulayınca hiçde öyle olmadığını göreceksiniz ve sürekli bu kontrolü kullanmak isteyeceksiniz.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot;&gt;&lt;/asp:ScriptManager&gt;
&lt;div class=&quot;popupKapat&quot;&gt;&lt;span&gt;Modal Box Başlık&lt;/span&gt;&lt;/div&gt;
</pre>
<p>RowCommand&#8217; dan gelen Detay adındaki butonumuzu bulup, iFrameOlustur methodumuzu çalıştırıyoruz. iFrameOlustur methodumuzda popupPanel içine myiframe kontrolünü ekliyoruz. Kodlara bakıldığında herşeyin anlaşıldığını düşünüyorum.</p>
<pre class="brush: csharp; title: ; notranslate">
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == &quot;Detay&quot;)
{
iFrameOlustur(&quot;GosterilecekSayfa.aspx?Id=&quot; + e.CommandArgument, &quot;800&quot;, &quot;500&quot;);
ModalPopupExtender1.Show();
}
}

protected void iFrameOlustur(string src, string width, string height)
{
HtmlGenericControl myiframe = new HtmlGenericControl(&quot;iframe&quot;);
myiframe.Attributes.Add(&quot;frameborder&quot;,&quot;0&quot;);
myiframe.Attributes.Add(&quot;src&quot;, src);
myiframe.Attributes.Add(&quot;width&quot;, width);
myiframe.Attributes.Add(&quot;height&quot;, height);
popupPanel.Controls.Add(myiframe);
}
</pre>
<p>Evet arkadaşlar bir yazının daha sonuna geldik. İnşallah işinize yarayan bir yazı olur. Hepinize güzel günler diliyorum.</p>
<div class="shr-publisher-164"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/gridview-ve-modal-popup-extender-ile-birlikte-calisma/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ASP.Net GridView Sıralama Sayfalama İşlemleri..</title>
		<link>http://www.apostylee.com/asp-net-gridview-siralama-sayfalama-islemleri/</link>
		<comments>http://www.apostylee.com/asp-net-gridview-siralama-sayfalama-islemleri/#comments</comments>
		<pubDate>Fri, 14 Nov 2008 17:01:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[gridview]]></category>
		<category><![CDATA[sıralama]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://ASP.Net-GridView-Siralama-Sayfalama-Islemleri...html</guid>
		<description><![CDATA[Veritabanı ile GridView&#8217; i doldurup, sayfalama ve sıralama işlemine göz atacağız. Öncelikle şunu belirtmekte fayda var diye görüyorum eğer editör olarak Visual Studio kullanıyorsanız sadece sürükle bırak yaparak bu işlemleri yapabilirsiniz, ama biz asp den geldiğimiz için kodu göre göre ne olduğunu anlaya anlaya yapmaya çalışacağız. Şunu itiraf  etmeliyim sıralama işlemini yapan bloğu http://www.forxy.net/ adresindeki http://www.forxy.net/ViewKonuDetay.aspx?KonuID=22 örneğinden gördüm :) İlk yapmaya [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Veritabanı ile GridView&#8217; i doldurup, sayfalama ve sıralama işlemine göz atacağız. Öncelikle şunu belirtmekte fayda var diye görüyorum eğer editör olarak Visual Studio kullanıyorsanız sadece sürükle bırak yaparak bu işlemleri yapabilirsiniz, ama biz asp den geldiğimiz için kodu göre göre ne olduğunu anlaya anlaya yapmaya çalışacağız. Şunu itiraf  etmeliyim sıralama işlemini yapan bloğu <a href="http://www.forxy.net/">http://www.forxy.net/</a> adresindeki <a href="http://www.forxy.net/ViewKonuDetay.aspx?KonuID=22">http://www.forxy.net/ViewKonuDetay.aspx?KonuID=22</a> örneğinden gördüm :) İlk yapmaya çalıştığım örnek olduğu için daha kolay bir şekilde yapılabilirmiydi şuanlık bilemiyorum, ama saat gibi çalıştığını söyleyebilirim. Kodlara baktığınızda hemen hemen herşeyi anlayacaksınız zaten, eğer anlamazsanız sorun bildiğim kadarıyla açıklamaya çalışırım :)</p>
<p><strong>Default.aspx</strong></p>
<pre class="brush: xml; title: ; notranslate">
&lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;
	    &lt;div&gt;
	        &lt;asp:gridview id=&quot;GridView1&quot; runat=&quot;server&quot; allowpaging=&quot;True&quot; onpageindexchanging=&quot;GridView1_PageIndexChanging&quot; allowsorting=&quot;True&quot; onsorting=&quot;GridView1_Sorting&quot;&gt;
	        &lt;/asp:gridview&gt;
	    &lt;/div&gt;
	    &lt;/form&gt;
</pre>
<p><strong>Default.aspx.cs</strong></p>
<pre class="brush: xml; title: ; notranslate">using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
doldur(&quot;ind&quot;,&quot; desc&quot;);
}
}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
doldur(&quot;ind&quot;, &quot; desc&quot;);
}

public SortDirection GridViewSortDirection
{
get
{
if (ViewState[&quot;sortDirection&quot;] == null)
ViewState[&quot;sortDirection&quot;] = SortDirection.Ascending;
return (SortDirection)ViewState[&quot;sortDirection&quot;];
}
set { ViewState[&quot;sortDirection&quot;] = value; }
}

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) {
if (GridViewSortDirection == SortDirection.Descending)
{
GridViewSortDirection = SortDirection.Ascending;
doldur(e.SortExpression, &quot; desc&quot;);
}
else
{
GridViewSortDirection = SortDirection.Descending;
doldur(e.SortExpression, &quot; asc&quot;);
}
}

public void doldur(string alanadi, string siralama)
{
SqlConnection cnn = new SqlConnection(&quot;Server=SqlServerAdresi; Database=VeriTabanıAdı; uid=KullanıcıAdı;pwd=Şifre;pooling=true; connection lifetime=10; connection timeout=5; packet size=1024;&quot;);
SqlDataAdapter da = new SqlDataAdapter(&quot;select * from TabloAdi&quot;, cnn);
DataTable dt = new DataTable(&quot;TabloAdi&quot;);
da.Fill(dt);
DataView dv = new DataView(dt);
dv.Sort = alanadi + siralama;
GridView1.DataSource = dv;
GridView1.DataBind();
};   }
}
</pre>
<div class="shr-publisher-74"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/asp-net-gridview-siralama-sayfalama-islemleri/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
