<?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>Systemdoktoru.com &#187; ASP.NET</title>
	<atom:link href="http://www.systemdoktoru.com/makale/asp-net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.systemdoktoru.com</link>
	<description>Windows Linux işletim sistemlerinin bilgi deposu</description>
	<lastBuildDate>Fri, 30 Apr 2010 19:02:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ASP.NET Dynamic Data &#8211; Gelişmiş Scaffolding</title>
		<link>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-gelismis-scaffolding/</link>
		<comments>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-gelismis-scaffolding/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 10:43:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.NET Dynamic Data]]></category>
		<category><![CDATA[Gelişmiş Scaffolding]]></category>

		<guid isPermaLink="false">http://www.systemdoktoru.com/?p=31</guid>
		<description><![CDATA[Merhabalar, daha &#246;nce ASP.NET Dynamic Data(yazının devamında DD kısaltmasını kullanacağım) hakkında bazı bilgileri yayınlamıştım. Yeni bir makale konusunda d&#252;ş&#252;n&#252;rken makale konusu olarak ger&#231;ek bir DD projesinde kullanıcı tarafından gelebilecek isteklerin hızlı bir şekilde nasıl karşılanabilineceğinden bahsetmenin uygun olduğuna karar verdim. Yazılımcı g&#246;z&#252;yle değerlendirmek gerekirse kullanıcı gereksinimleri konusunda g&#246;zden ka&#231;an bir &#231;ok gereksinimi g&#246;r&#252;lmeyebilir.&#160; &#214;rneğin bir [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar, daha &ouml;nce ASP.NET Dynamic Data(yazının devamında <strong><span class="style1"><em><span class="style2">DD</span></em></span></strong> kısaltmasını kullanacağım) hakkında bazı bilgileri yayınlamıştım. Yeni bir makale konusunda d&uuml;ş&uuml;n&uuml;rken makale konusu olarak ger&ccedil;ek bir DD projesinde kullanıcı tarafından gelebilecek isteklerin hızlı bir şekilde nasıl karşılanabilineceğinden bahsetmenin uygun olduğuna karar verdim.<br /> Yazılımcı g&ouml;z&uuml;yle değerlendirmek gerekirse kullanıcı gereksinimleri konusunda g&ouml;zden ka&ccedil;an bir &ccedil;ok gereksinimi g&ouml;r&uuml;lmeyebilir.&nbsp; &Ouml;rneğin bir tablo i&ccedil;indeki kayıtların listelenmesi yazılımcı i&ccedil;in gayet yeterlidir ancak kullanıcı g&ouml;z&uuml;yle bakıldığında her şeyin listelenmesi &ccedil;oğu zaman gereksiz olacaktır. Bu kapsamda kullanıcı isteklerine karşılık sorun &ccedil;&ouml;z&uuml;m&uuml;yle alakalı <strong><em>makalele dizisi</em></strong>nin ilkini yazmaya başlıyorum. Daha &ouml;nceki makalelerde bahsettiğim isimlendirme, bi&ccedil;imlendirme vb. gibi temel işlemlere bu makalede değinmeyeceğim.</p>
<p>Kullanıcı tarafında tablo &uuml;zerindeki her alanın(<em>column</em>) g&ouml;r&uuml;nt&uuml;lenmesi istenmeyebilir. Bazı durumlarda ise t&uuml;m kayıtların listelenmesi kullanım kolaylığı a&ccedil;ısından sıkıntılı olabilir.</p>
<p>Scaffolding tekniğiyle istenilen alanların t&uuml;m şablonlarda g&ouml;r&uuml;nt&uuml;lenmesini engelleyebiliyoruz. &Ouml;zellikle listeleme sayfalarında t&uuml;m alanların sayfada g&ouml;r&uuml;n&uuml;r halde olması yatay olarak uzayan bir sayfaya neden olur ancak bu alanları klasik scaffolding tekniği ile gizlersek diğer şablonlardanda kayboluverir.&nbsp; İşte burada asıl sorun ortaya &ccedil;ıkıyor: Gizlenen alanların kullanıcı tarafından d&uuml;zenlenmesi gerekiyorsa yada detaylı g&ouml;r&uuml;nt&uuml;leme şablonunda t&uuml;m alanların g&ouml;r&uuml;nt&uuml;lenmesi gerekiyorsa ne yapacağız?</p>
<p><span id="ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolder1_lblDetail"> </p>
<table border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td>&nbsp;</td>
<td>Aletleri geliştirmek DD i&ccedil;in her zaman kazanımdır. Bu senaryoda scaffolding tekniğini sayfa şablonlarına g&ouml;re nasıl &ouml;zelleştirebileceğimizi &ouml;ğreneceğiz.</td>
</tr>
</tbody>
</table>
<p></span></p>
<p>Kullanabileceğimiz veri bileşenleri(<em>GridView, FormView, DetailsView vb.</em>) veri listeleme sırasında listeleme işlemi i&ccedil;in <strong>IAutoFieldGenerator</strong> aray&uuml;z&uuml;n&uuml; uygulayan bir sınıf ile veri alanları &uuml;zerindeki kararını verir. Varsayılan alan oluşturucularda verideki t&uuml;m alanlar DD bildirimleri uygunlandıktan sonra(<em>scaffolding gibi kısıtlamalar vb.</em>) listelenir. Yapılması gereken şey ise veri listeleme işini ger&ccedil;ekleştirme g&ouml;revini yazacağımız bir sınıfın &uuml;stlenmesidir.</p>
<p><strong>IAutoFieldGenerator aray&uuml;z&uuml;n&uuml; uygulayan sınıfımız:</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator{    </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;    </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI;    </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;     </span><span style="color: #808080;">

    ///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">    </span><span style="color: #808080;">///</span><span style="color: #008000;"> Bu sınıf veri listelemesini işlemlerini    </span><span style="color: #808080;">///</span><span style="color: #008000;"> &ouml;zelleştirmek amacıyla yazılmıştır.     </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CustomColumnGenerator : IAutoFieldGenerator    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Veri listelemesi i&ccedil;in incelenecek        </span><span style="color: #808080;">///</span><span style="color: #008000;"> tablo değişkenini tutar        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable mTable = </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> IAutoFieldGenerator Members        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Listeleme işlemini ger&ccedil;ekleştirecek method        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="control"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> System.Collections.ICollection GenerateFields(Control control)        {            </span><span style="color: #008000;">// Uygun kolonların biriktirildiği koleksiyon</span><span style="color: #000000;">            List&lt;DynamicField&gt; dynFieldList = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> List&lt;DynamicField&gt;();            </span><span style="color: #008000;">// MetaTable atanmışsa</span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mTable != </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)            {                </span><span style="color: #008000;">// Her bir MetaColumn i&ccedil;in</span><span style="color: #000000;">                </span><span style="color: #0000ff;">foreach</span><span style="color: #000000;"> (MetaColumn mColumn </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.mTable.Columns)                {                    </span><span style="color: #008000;">// Scaffolding ataması yapılmışsa koleksiyona eklenmesi                    // uygun değildir. Eğer bu kontrol yapılmazsa ilgili                    // alan g&ouml;r&uuml;nt&uuml;lenecektir. &Ccedil;&uuml;nk&uuml; t&uuml;m sorumluluğu almış                    // bulunuyoruz</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (                            !mColumn.Scaffold                        )                        </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;                     DynamicField dynField = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DynamicField();                    dynField.DataField = mColumn.Name;                    dynFieldList.Add(dynField);                }            }            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> dynFieldList;        }        </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">    }}

</span></pre>
</div>
<p><span class="style4"><em>Scaffolding</em></span> tekniğini denetleyerek g&ouml;r&uuml;nt&uuml;leme işlemini &uuml;stlenen sınıfımız artık hazır. Şimdi sıra şablonlara g&ouml;re bu denetleme işlemine geldi. Varsayılan şablonlar i&ccedil;in bir enum tanımlayıp GenerateFields methodunda şablona g&ouml;rede bir denetleme yapmamız gerecektir.</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.Enums{    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">enum</span><span style="color: #000000;"> PageTemplateType    {        Details,        Edit,        Insert,        List,        ListDetails    }}

</span></pre>
</div>
<p>&Ouml;zelleştirme işlemlerinin uygulanabilmesi i&ccedil;in &ouml;zel bir &ouml;znitelik geliştirip bildirimlerin bu &ouml;znitelik &uuml;zerinden ger&ccedil;ekleştirmesi gerekiyor bunun i&ccedil;in aşağıdaki sınıfı kullanabiliriz.</p>
<p>[more]</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Enums;

</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.CustomAttributes{    [AttributeUsage(AttributeTargets.Property)]    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CustomHiddenColumnAttribute : Attribute    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> İlgili alanın gizlenmesi gereken sayfa şablonları belirleniyor        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> PageTemplateType[] PageTemplateTypes { </span><span style="color: #0000ff;">get</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">set</span><span style="color: #000000;">; }        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Parametresiz bir constructor yazılması mecburi ancak        </span><span style="color: #808080;">///</span><span style="color: #008000;"> kullanılmaması i&ccedil;in hata fırlatılması daha uygun        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> CustomHiddenColumnAttribute()        {            </span><span style="color: #0000ff;">throw</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> InvalidOperationException();        }        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Sayfa şablonlarının atama işleminin kolaylaştırılması        </span><span style="color: #808080;">///</span><span style="color: #008000;"> nedeniyle params y&ouml;ntemi kullanılmıştır. &Ouml;znitelik         </span><span style="color: #808080;">///</span><span style="color: #008000;"> tanımlamasında AllowMultiple=true atamasıda yapılabilir        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="PageTemplateParams"&gt;&lt;/param&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> CustomHiddenColumnAttribute(</span><span style="color: #0000ff;">params</span><span style="color: #000000;"> PageTemplateType[] PageTemplateParams)        {            </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.PageTemplateTypes = PageTemplateParams;        }    }}

</span></pre>
</div>
<p>Bu &ouml;zniteliğin &ouml;rnek tanımlaması aşağıdaki gibidir. Daha &ouml;ncede belirttiğim gibi &ouml;znitelik yazmayı &ccedil;ok <span class="style4">severim</span> <img src='http://www.systemdoktoru.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Bundan b&ouml;yle sadece aşağıdaki kodu kullarak t&uuml;m kodu yazmadan işimizi halledebiliriz.</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #000000;"><strong>[CustomHiddenColumn(        PageTemplateType.List, PageTemplateType.ListDetails)]</strong></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> <strong>SmtpHost</strong> { </span><span style="color: #0000ff;">get</span><span style="color: #000000;">; </span><span style="color: #0000ff;">set</span><span style="color: #000000;">; }

</span></pre>
</div>
<p>Madem bu kadar kod yazdık birde MetaColumn nesneleri i&ccedil;in genişletilmiş bir method yazarak kolonda ve şablona g&ouml;re gizlilik bildirimi yapılmışmı diye kontrol edelimki her seferinde bir yığın kod yazmaktan kurtulalım.</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes.UIHint;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Enums;</span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"></span><span style="color: #808080;">///</span><span style="color: #008000;"> &Ouml;mer Faruk ZORLU</span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.Extentions{    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> MetaColumnExtentions    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Sayfa şablonuna g&ouml;re alanın gizlilik durumunu d&ouml;nderir        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="mColumn"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="pTemplateType"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;"> System.Web.DynamicData.MetaColumn mColumn, PageTemplateType pTemplateType)        {            </span><span style="color: #008000;">// Kolon &uuml;zerinde atanmış ustomHiddenColumn &ouml;zniteliği alınıyor            // Eğer &ccedil;oklu tanımlama(AllowMultiple) ya izin verilmişse bir            // d&ouml;ng&uuml; i&ccedil;erisinde kontrol edilmesi gerekir</span><span style="color: #000000;">            CustomHiddenColumnAttribute chCAttr =                mColumn.Attributes.OfType&lt;CustomHiddenColumnAttribute&gt;().FirstOrDefault(); &nbsp;             </span><span style="color: #008000;">//  Herhangi bir &ouml;znitelik ataması yoksa gizli değildir</span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (chCAttr == </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)                </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;             </span><span style="color: #008000;">// İlgili alan i&ccedil;in yapılan gizlilik bildirimleri parametrede            // g&ouml;nderilmiş sayfa şablonunu i&ccedil;eriyorsa gizlidir</span><span style="color: #000000;">            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> chCAttr.PageTemplateTypes.Contains(pTemplateType);;        }    }}

</span></pre>
</div>
<p>Artık daha &ouml;nce yazdığımız alan oluşturucu sınıf &uuml;zerinde &ouml;zel gizleme yapımızı denetleyen kodlar yazabiliriz. Yukarıda yazdığımız sınıfa yeni eklenen kodlar kalın olarak yazılmıştır.</p>
<p>&nbsp;</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Extentions;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Enums; </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator{    </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">    </span><span style="color: #808080;">///</span><span style="color: #008000;"> Bu sınıf veri listelemesini işlemlerini    </span><span style="color: #808080;">///</span><span style="color: #008000;"> &ouml;zelleştirmek amacıyla yazılmıştır.     </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CustomFieldGenerator : IAutoFieldGenerator    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Veri listelemesi i&ccedil;in incelenecek        </span><span style="color: #808080;">///</span><span style="color: #008000;"> tablo değişkenini tutar        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable mTable = </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;

        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> PageTemplateType pTemplateType;         </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> ctor         </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> CustomFieldGenerator(MetaTable _mTable, PageTemplateType _pTemplateType)        {            </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.mTable = _mTable;            </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType = _pTemplateType;        }         </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">         </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> IAutoFieldGenerator Members        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Listeleme işlemini ger&ccedil;ekleştirecek method        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="control"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> System.Collections.ICollection GenerateFields(Control control)        {            </span><span style="color: #008000;">// Uygun kolonların biriktirildiği koleksiyon</span><span style="color: #000000;">            List&lt;DynamicField&gt; dynFieldList = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> List&lt;DynamicField&gt;();            </span><span style="color: #008000;">// MetaTable atanmışsa</span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mTable != </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)            {                </span><span style="color: #008000;">// Her bir MetaColumn i&ccedil;in</span><span style="color: #000000;">                </span><span style="color: #0000ff;">foreach</span><span style="color: #000000;"> (MetaColumn mColumn </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.mTable.Columns)                {                    </span><span style="color: #008000;">// Scaffolding ataması yapılmışsa koleksiyona eklenmesi                    // uygun değildir. Eğer bu kontrol yapılmazsa ilgili                    // alan g&ouml;r&uuml;nt&uuml;lenecektir. &Ccedil;&uuml;nk&uuml; t&uuml;m sorumluluğu almış                    // bulunuyoruz</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (                            !mColumn.Scaffold                        )                        </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;                     </span><span style="color: #008000;">// List ve ListDetails şablonları i&ccedil;in IsHidden                    // genişletilmiş methodu ve IsLongString methodunu                    // kontrol ediyoruz ancak Details şablonu i&ccedil;in                    // IsLongString methodunu kontrol edip gizlersek                    // uzun metin alanlar g&ouml;r&uuml;nt&uuml;lenmeyecek yani ufak bir                    // bug oluşacaktır.</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">switch</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType)                    {                        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> PageTemplateType.Details:                            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType))                                </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">; </span><span style="color: #008000;">// foreach</span><span style="color: #000000;">                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> PageTemplateType.List:                            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType) ||                                    mColumn.IsLongString)                                </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">; </span><span style="color: #008000;">// foreach</span><span style="color: #000000;">                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> PageTemplateType.ListDetails:                            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType) ||                                    mColumn.IsLongString)                                </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">; </span><span style="color: #008000;">// foreach</span><span style="color: #000000;">                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                        </span><span style="color: #0000ff;">default</span><span style="color: #000000;">:                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                    }                     </span><span style="color: #008000;">// Varsayılan şablonların haricinde uzun metinlerin                    // g&ouml;r&uuml;nt&uuml;lenmesini engellemek amacıyla bu kontrol                    // yapılıyor</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsLongString)                        </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;                     DynamicField dynField = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DynamicField();                    dynField.DataField = mColumn.Name;                     dynFieldList.Add(dynField);                }            }            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> dynFieldList;        }        </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">    }}</span></pre>
</div>
<p>Son adımında ise ilgili veri kontrol&uuml;ne veri listeleme işlemini bizim &uuml;stleneceğimizi bildirmek gerekiyor. GridView nesnesi i&ccedil;in <strong>ColumnGenerator</strong> DetailsView i&ccedil;inse <strong>RowGenerator</strong> parametresi kullanılıyor. Son haliyle <strong>List</strong>.aspx.cs ve <strong>Details</strong>.aspx.cs şablon kodları aşağıdaki gibi tanımlanmalıdır.</p>
<p>&nbsp;</p>
<p><strong>List.aspx.cs kodları:</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Extentions; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> List : System.Web.UI.Page{    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable table;    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Init(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)    {        DynamicDataManager1.RegisterControl(GridView1, </span><span style="color: #0000ff;">true</span><span style="color: #000000;"> </span><span style="color: #008000;">/*setSelectionFromUrl*/</span><span style="color: #000000;">);        table = GridDataSource.GetTable();        GridView1.<strong>ColumnsGenerator </strong>= </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> <strong>CustomFieldGenerator</strong>(table,<strong> Eposta.Core.Enums.PageTemplateType.List</strong>);    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Load(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)    {        Title = table.DisplayName;        InsertHyperLink.NavigateUrl = table.GetActionPath(PageAction.Insert);         </span><span style="color: #008000;">// Disable various options if the table is readonly</span><span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (table.IsReadOnly)        {            GridView1.Columns[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Visible = </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;            InsertHyperLink.Visible = </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;        }    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> OnFilterSelectedIndexChanged(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)    {        GridView1.PageIndex = </span><span style="color: #800080;">0</span><span style="color: #000000;">;    }}</span></pre>
</div>
<p><strong><br /> Details.aspx.cs kodları:</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI.WebControls;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Details : System.Web.UI.Page {    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable table;    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Init(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) {        DynamicDataManager1.RegisterControl(DetailsView1);    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Load(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) {        table = DetailsDataSource.GetTable();        DetailsView1.<strong>RowsGenerator </strong>= </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> <strong>CustomFieldGenerator</strong>(table, <strong>Eposta.Core.Enums.PageTemplateType.Details</strong>);

        Title = table.DisplayName;

        ListHyperLink.NavigateUrl = table.ListActionPath;    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> DetailsView1_ItemDeleted(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, DetailsViewDeletedEventArgs e) {        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (e.Exception == </span><span style="color: #0000ff;">null</span><span style="color: #000000;"> || e.ExceptionHandled) {            Response.Redirect(table.ListActionPath);        }    }}

</span></pre>
</div>
<p>&Ccedil;&ouml;z&uuml;m itibari ile Grup tablosunda yapılan tanımlalarla listeleme sayfa şablonlarında bazı alanların gizlenmesini g&uuml;ncelleme ve detaylı g&ouml;r&uuml;nt&uuml;leme sayfa şablonlarında ise kullanıcının verileri g&ouml;r&uuml;nt&uuml;lemesine ve d&uuml;zenlemesine imkan tanımış olduk. Ekran g&ouml;r&uuml;nt&uuml;leri aşağıdaki gibidir.</p>
<p><strong>G&uuml;ncelleme ekranı:</strong></p>
<p><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002433_1.jpg" alt="" width="374" height="264" /></p>
<p> <strong>Listeleme ekranı:</strong></p>
<p><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002433_2.jpg" alt="" width="493" height="271" /></p>
<p> Bir yazının daha sonuna geldik. Kullanıcı gereksinimleriyle alakalı makaleler devam edecektir. Bir sonraki makalede g&ouml;r&uuml;şmek &uuml;zere. Yaşasın <span class="style6"><strong>dinamizm</strong></span>!</p>
<p><strong>Ömer Faruk ZORLU<br /> </strong></p>
<p></span></td>
</tr>
]]></content:encoded>
			<wfw:commentRss>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-gelismis-scaffolding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;ExtJS, Coolite ne ola ki? &#8221; Yazı Dizisi Vol.1</title>
		<link>http://www.systemdoktoru.com/2010/04/extjs-coolite-ne-ola-ki-yazi-dizisi-vol-1/</link>
		<comments>http://www.systemdoktoru.com/2010/04/extjs-coolite-ne-ola-ki-yazi-dizisi-vol-1/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 10:34:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.systemdoktoru.com/?p=20</guid>
		<description><![CDATA[


                                                    
Günümüz Web programcılığı [...]]]></description>
			<content:encoded><![CDATA[</tr>
<tr>
<td colspan="3">
                                                    <span id="lblMakale">
<p>Günümüz Web programcılığı alanında vazgeçemeyeceğimiz bir istemci-taraflı<br />
yorumlanan script dilidir JavaScript. Hayatımıza 1995&#39;de Netscape 2.0 ile<br />
birlikte giren , önceleri&nbsp; <strong>Mocha</strong> daha sonra <strong><br />
LiveScript </strong>ve en son <strong>JavaScript</strong> adını alan <em>(Sun<br />
Microsystems&#39;ın Java sıyla bir alakası yok.)</em> müthiş buluş diye<br />
tanımlayabiliriz bence JavaScript&#39;i. Web ile uğraşan herkes, en azından bir kere<br />
kullanmıştır eminim. Özellikle görsel sunum tarafında, çok fazla varyasyon elde<br />
etmemize yardımcı oluryor. Hatırlıyorum da , küçükken bir site tasarımıyla<br />
uğraşıyordum ve sitede havai fişek gösterisi olsun istemiştim. O zamanlar da<br />
hazır JavaScript kodu bulabileceğimiz çok kaynak vardı. Birkaç saniye içinde,<br />
web sitesinde havai fişek gösterisi efektini yakalayabilmiştim. Hiç unutmam<br />
içimden : &quot;Allah JavaScript&#39;i başımızdan eksik etmesin!&quot; demiştim.</p>
<p>Sadece görsellik ile bitmiyor JavaScript&#39;in bu kadar popüler olmasındaki<br />
etmenler. AJAX(<i>Asynchoronous JavaScript And XML</i>) kavramının temeli,<br />
isminin açılımından da anlaşılacağı üzere, JavaScript&#39;tir. XMLHttpRequest<br />
objesiyle (IFRAME de kullanılabilir) yapılan bilgi transferi sonrasında, bu<br />
bilgiyi dinamik bir şekilde kullanıcıya sunmak ve bilgiyle etkileşim halinde olmak için<br />
JavaScript kullanırız.</p>
<p>JavaScript&#39;in yukarıda saydığım özelliklerini ve gücünü göz önüne alan<br />
firmalar, açık kaynaklı JavaScript kütüphaneleri oluşturdular. Bu çalışmaların<br />
en çok göz önünde olanı jQuery oldu. AJAX kullanımının artmasıyla jQuery<br />
kullanımı da arttı. Hakkında birçok makale ve kitap yazıldı.<br />
İlgilenenler jQuery.com adresinde, BOOKS ABOUT JQUERY bölümünü inceleyebilirler.<br />
<a href="http://www.umutluoglu.com/">Uğur Umutluoğlu</a>&#39;nun da &quot;<a href="http://www.yazgelistir.com/Makaleler/1000002378.ygpx">ASP.NETte<br />
jQuery ile AJAX İşlemleri</a>&quot; başlıklı bir makalesi var. </p>
<p><span class="style3"><strong><em>jQuery</em></strong></span>&#39;nin yanı sıra, Türkiye&#39;de hakkında pek konuşulmayan; ama üstüne birçok<br />
firmanın framework&#39;ler geliştirdiği bir kütüphane var : <strong><br />
ExtJS</strong>. Şans eseri varlığından haberim oldu<br />
aslında. İş görüşmesine gittiğim firmada (şuan çalıştığım firma), görüşme<br />
sırasında adı geçti. Biraz ARGE çalışmasından sonra aslında ne kadar kullanışlı<br />
bir kütüphane olduğunun farkına vardık.</p>
<p>Tam JS kodlarına gömülmeye hazırlandığım sırada karşıma <span class="style3"><br />
<strong><em>Coolite</em></strong></span> adında,<br />
efsane, birşey çıktı. Efsane olmasının nedeni .Net&#39;de Markup kodu yazarak Ext objeleri yaratma gücü<br />
veren bir framework olmasıydı. Hatta, yarattığımız objelere C# ya da VB kodu<br />
yazarak ulaşma yolunu sunuyordu. Aramızda kalsın, JS kodu yazmaktansa C#<br />
ya da VB kodu yazmayı tercih ederim.</p>
<p>Bugün yaptığım bir araştırmaya göre de, TURKCELL TEKNOLOJIlabs ExtJS<br />
kütüphanesini referans alarak, Java için açık kaynaklı&nbsp; bir framework<br />
geliştirmişler. Adı da <span class="style3"><strong><em>ISOLA</em></strong></span>.<br />
Coolite&#39;ın Java versiyonu. Güzel tarafı Türkcell&#39;in bu framework&#39;ü open source<br />
dağıtması. Coolite&#39;ın ücretli bir framework olduğunu düşünürsek, bu nokta<br />
ISOLA&#39;yı daha üstün kılıyor bence.</p>
<p>Tüm bu gelişmeler beni bu konularda makaleler dizisi yazmaya itti ve işte<br />
burdayız.</p>
<p>Genel akış içinde ExtJS ve Coolite nedir, kullanım alanları nelerdir, nasıl<br />
kullanırız, Sıkça Sorulan(bilecek) Sorular başlıklarının altına dallanarak<br />
gelişicek konularımız. Şuan kafamda oluşan plana göre, yazı dizisini yine geniş<br />
bir video dizisi seyredicek.Isola hakkında da yazmak isterdim; fakat Java<br />
konusunda okadar bilgiye sahip değilim ne yazık ki.</p>
<p>Yukarıdaki bölüm sadece giriş paragraflarından oluşuyor. Artık derinlere<br />
inmenin zamanı geldi.</p>
<p>Not (1) : JavaScript ve Ajax&#39;ı bildiğinizi varsayarak başlıyorum. Eğer onları<br />
da yazmaya kalkarsam çok ama çok uzun bir yazı dizisi olur. Bu kavramlar<br />
hakkında bilgisi olmayan arkadaşlara <a href="http://daron.yondem.com">Daron<br />
Yöndem</a>&#39;in ASP.NET AJAX ve ASP.NET 3.5 AJAX adlı kitaplarını öneririm.</p>
<p><strong>Bölüm 1 : ExtJS&#39;e Giriş</strong></p>
<p>Kısaca tanımlamak gerekirse ExtJS, çoklu browser destekli, güçlü kullanıcı<br />
arayüzleri programlamanıza yardımcı, Ajax işlemlerini yapmanızı çok<br />
kolaylaştıran, Open Source ve Ticari lisansları olan bir JavaScript kütüphanesi.</p>
<p>Lisanslamalarına da dikkat çektim; çünkü eğer ticari bir ürün yaratmak için<br />
kullanmak istiyorsanız Ext kütüphanesini, ücretini verip almanız gerekiyor.</p>
<p>Çoklu Browser(cross-browser) destekli dedim; peki hangi browserları<br />
destekliyor diye bakıcak olursak, </p>
<ul>
<li>Internet Explorer 6 ve sonraki sürümler</li>
<li>Firefox 1.5 ve sonraki sürümler</li>
<li>Safari 3 ve sonraki sürümler</li>
<li>Opera 9 ve sonraki sürümler</li>
</ul>
<p>Bu maddelere ek olarak Google Chrome&#39;da da güzel bir performans<br />
sunuyor.(Bizzat kendim denedim)</p>
<p>Çoklu Browser desteği özelliğini test ettiğimde (Puanlar 5 üzerindendir) :
</p>
<ul>
<li>Internet Explorer 8 &#39;de 4 puanlık</li>
<li>Mozilla Firefox 3.5 &#39;da 5 puanlık</li>
<li>Google Chrome &#39;da 4 puanlık</li>
</ul>
<p>randıman aldım.Diğer browserları deneme şansım olmadı.Eğer siz denerseniz<br />
sonuçları benimle de paylaşın lütfen.</p>
<p>Arayüz programlama konusunda ise gerçekten çok geniş bir yelpaze sunuyor bize<br />
ExtJS kütüphanesi. Benim Ext&#39;e, tabir yerindeyse, aşık olmamı sağlayan bir örnek<br />
vereyim size :<br />
<a href="http://www.extjs.com/deploy/dev/examples/desktop/desktop.html">Desktop</a><br />
örneği.</p>
<p><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002396_desktop.JPG"  /></p>
<p><em>İşte Desktop</em></p>
<p>Bu görüntüyü elde etmek için yapmanız gerekenleri, yazmanız gereken JS<br />
kodlarını, bir sonraki makalemizde inceleyeceğiz.</p>
<p>Tanımda bahsettiğim bir başka nokta ise AJAX işlemlerini kolaylaştırdığıydı.<br />
Aşağıdaki örneklerden de anlaşılacağı üzere, jQuery ve Ext deki AJAX işlemleri<br />
çok da farklı değil. Hangi sayfaya istekte bulunacağını, işlem tamamlandığında<br />
hangi fonksiyona gideceğini, işlem tamamlanamadığında hangi fonksiyona<br />
gideceğini, varsa parametreleri tanımlayıp işlemi bitiriyoruz.</p>
<div style="font-family: Consolas; font-size: 10pt; color: black; background: white;">
<p><strong><em>&nbsp;[ExtJS]</em></strong></p>
<p class="style2">Ext.Ajax.request({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	url: <span style="color: #a31515;">&#39;sayfa.aspx&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	success: fonksiyon1,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	failure: fonksiyon2,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	params: { ID: <span style="color: #a31515;">&#39;1&#39;</span> }</p>
<p style="margin: 0px;">});</p>
<p style="margin: 0px;">&nbsp;</p>
</div>
<p><!--EndFragment--></p>
<div style="font-family: Consolas; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><strong><em>&nbsp;[jQuery]</em></strong></p>
<p style="margin: 0px;">&nbsp;</p>
<div style="font-family: Consolas; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		$.ajax({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		type: <span style="color: #a31515;">&#39;GET&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		url: <span style="color: #a31515;">&#39;sayfa.aspx&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		success: fonksiyon1</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		},</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		error: fonksiyon2</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );</p>
</p></div>
<p><!--EndFragment--></p>
<p style="margin: 0px;">&nbsp;</p>
</div>
<p><!--EndFragment--></p>
<p>Böylece bu uzun soluklu yazı dizimizin ilk bölümünün sonuna geldik. 2.Bölüm &#39;<br />
de UI tasarlarken ne yapmalıyız, ExtJS &#39;nin bize sunduğu UI objelerini<br />
kullanarak neler yapabiliriz konuları üzerinde duruyor olacağız.</p>
<p>Temelde ExtJS kullanımını konuşucağız bir süre. Bu konulara hakim olduktan<br />
JS kodları arasında boğulmadan Coolite ile .NET tarafında ne sihirbazlıklar<br />
yapabiliceğimizi göreceğiz. </p>
<p>Merak etmeyin arayı soğutmayacağım, bu aralar müsaitim bol bol yazarım.</p>
<p>Bir sonraki bölümde görüşmek üzere.</p>
<p>&nbsp;</p>
<p></span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center">
                                        </p>
<table id="Table21" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td class="menuLeftCaption" colspan="3">
]]></content:encoded>
			<wfw:commentRss>http://www.systemdoktoru.com/2010/04/extjs-coolite-ne-ola-ki-yazi-dizisi-vol-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;ExtJS, Coolite ne ola ki? &#8221; Yazı Dizisi Vol.2</title>
		<link>http://www.systemdoktoru.com/2010/04/extjs-coolite-ne-ola-ki-yazi-dizisi-vol-2/</link>
		<comments>http://www.systemdoktoru.com/2010/04/extjs-coolite-ne-ola-ki-yazi-dizisi-vol-2/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 10:33:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.systemdoktoru.com/?p=19</guid>
		<description><![CDATA[


                                                    
Bu makalemde &#34; [...]]]></description>
			<content:encoded><![CDATA[</tr>
<tr>
<td colspan="3">
                                                    <span id="lblMakale">
<p>Bu makalemde &quot; ExtJS ve Coolite ne ola ki? &quot; yazı dizisinin devamı olarak<br />
ExtJS objelerinden &quot;Grid&quot; objesini nasıl kullanırız?, datada grid üzerinden<br />
nasıl değişiklik yaparız? ana başlıkları altında bir çok kavrama değineceğim.&nbsp;
</p>
<p>Lafa başlamadan önce iki makale arasında bu kadar ara verdiğim için herkesten<br />
özür dilerim. Okul ve iş yoğunluğu arasında boğulmakla uğraştığımdan makaleye<br />
zaman ayıramadım. Bu aksaklığı telafi etmeye çalışacağıma söz veriyorum.</p>
<p>ExtJS&#39; nin genel hatlarının üstünden geçmiştik. Şimdi ise birçok konuyu<br />
harmanlayan bir senaryo üzerinden devam edelim. Amacımız, ExtJS objelerini<br />
kullanarak hem güzel bir UI elde etmek, hem de nasıl data işlemleri yaparız<br />
sorusunun cevabını aramak olacak. Senaryomuz da şu olsun : Biz bir meyve<br />
üreticisiyiz. Ürettiğimiz meyveleri görmek, kayıtlarının üstünde değişiklik<br />
yapmak ve onları satmak istiyoruz.</p>
<p>Senaryomuzu hayata geçirmeye başlamadan önce yapmamız gereken bazı önemli<br />
şeyler var :</p>
<ol>
<li>ExtJS&#39; nin güncel kütüphanesini (versiyon 3.1.1)<br />
	<a href="http://www.extjs.com/products/js/download.php?dl=extjs311&amp;ref=extjsgreenbutton"><br />
	indirmek</a></li>
<li>HTML ve JavaScript kodlarımızı düzenlemek için uygun bir editör seçmek:<br />
	Visual Studio ortamını kullanabilirsiniz. </li>
</ol>
<p>Bu iki öngereksinimi de gerçekleştirdikten sonra projemize başlamamız için<br />
önümüzde bir engel kalmıyor. Visual Studio&#39; da bir &quot;Web Site&quot; oluşturarak<br />
başlayabiliriz.</p>
<p>Projeyi oluşturduktan sonra indirdiğimiz ExtJS kütüphanesinden bir kaç<br />
dosyayı projemize dahil etmeliyiz. Bunun için site içinde &quot;extLib&quot; adlı bir<br />
dosya oluşturduktan sonra ExtJS kütüphanesinin kök dosyasından yola çıkarak, </p>
<ol>
<li>ext-all.js javascript dosyasını,</li>
<li>&quot;adaptor&quot; klasörünü,</li>
<li>&quot;resources&quot; klasörünü,</li>
<li>&quot;examples/ux&quot; klasörünü,</li>
<li>&quot;examples/shared&quot; klasörünü,</li>
<li>&quot;examples/grid/grid-example.css&quot; stil dosyasını</li>
</ol>
<p>oluşturduğumuz klasöre kopyalayalım. Neden bu dosyaları ve klasörleri<br />
kopyaladığımıza gelicek olursak; içlerinde bize lazım olan temel ext javascript<br />
dosyaları ve css dosyaları bulunuyor. Bu yüzden bu öğeleri projemize dahil<br />
etmemiz gerekiyor.</p>
<p><img alt="" height="258" src="http://www.yazgelistir.com/Makaleler/Resimler/1000002413_solution.jpg" width="204" /></p>
<p><em>İşlemlerden sonra oluşması gereken ekran görüntüsü</em></p>
<p><!--EndFragment--></p>
<p>Kodlama kısmına yavaş yavaş geçerken neler yapmamız gerektiğine adım adım<br />
bakarsak, </p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p><strong><span class="style1">1)</span></strong> &lt;<span style="color: #a31515;">head<span style="color: blue;">&gt;</span></span><span style="color: blue;">&lt;/</span><span style="color: #a31515;">head</span>&gt; &nbsp;tagları arasına gerekli olan referanlarımızı eklemeliyiz. Bahsettiğim<br />
javascript ve css referansları aşağıdaki gibidir.</p>
<p><!--EndFragment-->
</div>
<p><!--EndFragment--></p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: green;"><br />
		&lt;!&#8211;JS dosyaları&#8211;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/javascript&quot;</span><br />
		<span style="color: red;">src</span><span style="color: blue;">=&quot;extLib/adapter/ext/ext-base.js&quot;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/javascript&quot;</span><br />
		<span style="color: red;">src</span><span style="color: blue;">=&quot;extLib/ext-all.js&quot;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/javascript&quot;</span><br />
		<span style="color: red;">src</span><span style="color: blue;">=&quot;extLib/ux/RowEditor.js&quot;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: green;"><br />
		&lt;!&#8211;CSS dosyaları&#8211;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/resources/css/ext-all.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/grid-examples.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/shared/examples.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/ux/css/RowEditor.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">style</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: #a31515;">.icon-user-add</span> {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: red;">background-image</span>:<br />
		<span style="color: blue;">url(extLib/shared/icons/fam/user_add.gif)</span><br />
		<span style="color: blue;">!important</span>;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: #a31515;">.icon-user-delete</span> {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: red;">background-image</span>:<br />
		<span style="color: blue;">url(extLib/shared/icons/fam/user_delete.gif)</span><br />
		<span style="color: blue;">!important</span>;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;/</span><span style="color: #a31515;">style</span><span style="color: blue;">&gt;</span></p>
</p></div>
<p><!--EndFragment--></p>
<p style="margin: 0px;">&nbsp;</p>
</div>
<p><!--EndFragment--></p>
<p>Bu noktada &quot;ext-base.js&quot; ve &quot;ext-all.js&quot; dosyalarının bizim için vazgeçilmez<br />
olduğunu vurgulamakta fayda var. Her ne yapıyor olursak olalım, bu iki dosyayı<br />
mutlaka referans almalıyız. Onların yanında kullandığımız ekstra özellikleri<br />
içeren JavaScript dosyalarını da projeye dahil etmeliyiz. Örneğin, benim<br />
örneğimde RowEditor kullanıldığından, aynı isimli JavaScript dosyasını da<br />
projeye dahil ettim.</p>
<p><strong class="style3">2)</strong> Eklememiz gereken bütün dosyaları<br />
projemize referans aldıktan sonra, bütün işlemlerimizi yapacağımız JavaScript<br />
kodumuzu oluşturmaya geçebiliriz. </p>
<p>Uygulamada kullanacağımız dataların şablonunu hazırlamalıyız.&nbsp; </p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> Urun = Ext.data.Record.create([{</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	name: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	type: <span style="color: #a31515;">&#39;string&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	name: <span style="color: #a31515;">&#39;tip&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	type: <span style="color: #a31515;">&#39;string&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	name: <span style="color: #a31515;">&#39;uretim&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	type: <span style="color: #a31515;">&#39;date&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	dateFormat: <span style="color: #a31515;">&#39;n/j/Y&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	name: <span style="color: #a31515;">&#39;adet&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	type: <span style="color: #a31515;">&#39;integer&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	name: <span style="color: #a31515;">&#39;fiyat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	type: <span style="color: #a31515;">&#39;integer&#39;</span>}]);</p>
</div>
<p><!--EndFragment--></p>
<p>Yukarıda da gördüğünüz gibi Ext.data.Record.create metodunu kullanarak; alan<br />
adları ad, tip, uretim, adet ve fiyat olan bir tablo oluşturduk ve adına da<br />
&quot;Urun&quot; dedik.</p>
<p>Doğal olarak bu şablonu kullanarak data oluşturmamız gerekmektedir. Ben bu<br />
örnek için istemci-taraflı data oluşturup oynamaları o datanın üstünde yaparız<br />
diye düşündüm. Bir sonraki makalemde sunucu-taraflı dataları çekip istemci<br />
tarafında oynamaları yapıp değişikliklerin kaydedilmesi için yine sunucu<br />
tarafına göndermeyi nasıl yapıcağımıza göz atacağız. Dediğim gibi kayıt<br />
oluşturmak için bir metoda ihtiyacımız var.</p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<span style="color: blue;">var</span><br />
	genData = <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">&nbsp;&nbsp;&nbsp;&nbsp; var</span> data = [];</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> s = <span style="color: blue;">new</span><br />
	Date(2007, 0, 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> now = <span style="color: blue;">new</span><br />
	Date(), i = -1;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">while</span> (s.getTime() &lt; now.getTime()) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> ecount = Ext.ux.getRandomInt(0, 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">for</span> (<span style="color: blue;">var</span><br />
	i = 0; i &lt; ecount; i++) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> name = Ext.ux.generateName();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	data.push({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	uretim: s.clearTime(<span style="color: blue;">true</span>).add(Date.DAY,<br />
	Ext.ux.getRandomInt(0, 27)),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	ad: name,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	tip: <span style="color: #a31515;">&#39;Meyve&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	adet: Ext.ux.getRandomInt(10, 100),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	fiyat: Ext.ux.getRandomInt(10, 100)</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	});</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	s = s.add(Date.MONTH, 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">return</span> data;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
</div>
<p><!--EndFragment--></p>
<p>Bu fonksiyon bizim işimizi görür. Nasıl işlediğine biraz göz atalım : 2007<br />
den başlayarak günümüze kadar düzgün devam etmeyen bi döngü var. Her bir turda<br />
oluşturduğumuz diziye, alan değerleri gelişi güzel olan yeni bir kayıt<br />
ekliyoruz. Bu sayede yaklaşık on yedi adet, birbirinden farklı kayıt elde etmiş<br />
oluyoruz.</p>
<p>&nbsp;Bir sonraki adımda oluşan bu kayıtları grid objemize nasıl bağlayacağız<br />
sorunu ortaya çıkıyor. Tabii ki imdadımıza yetişen bir Ext objesi var : <em><br />
<strong>Store. </strong></em>Store objesi, bizim datalarımızı, üstünde yapılan<br />
değişiklikleri, son halini kısaca herşeyi barındıran, çok özel bir nesne.<br />
Kullanımı ise çok kolay.</p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> store = <span style="color: blue;">new</span><br />
	Ext.data.GroupingStore({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	reader: <span style="color: blue;">new</span> Ext.data.JsonReader({ fields:<br />
	Urun }),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: green;">//datayı nereden alıcagını belirttik.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	data: genData(),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	sortInfo: { field: <span style="color: #a31515;">&#39;uretim&#39;</span>, direction:<br />
	<span style="color: #a31515;">&#39;ASC&#39;</span> }</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	});</p>
</div>
<p><!--EndFragment--></p>
<p>Store nesnesi kayıtları json halinde saklıyor. Bu yüzden hangi tip kayıtları<br />
okuyacağını belirtmemiz gerekiyor. Ayrıca bir çok başka özelliği daha var.<br />
Yukarıda örnek olarak <em>sortInfo </em>özelliğine hangi alanı ne tipte<br />
sıralayacağını belirtmişim. API dökümantasyonunu incelerseniz, bu güzel nesnenin<br />
bir çok farklı özelliğe sahip olduğunu göreceksiniz.</p>
<p>Sıra geldi Grid nesnemizi yaratmaya.</p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><span style="color: green;">//gridimizi yaratalım</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> grid = <span style="color: blue;">new</span><br />
	Ext.grid.GridPanel({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: green;">//grid oluştururken &#39;store&#39; degerini vermeyi<br />
	unutmayınız.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	store: store,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	width: 600,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	region: <span style="color: #a31515;">&#39;center&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	margins: <span style="color: #a31515;">&#39;0 5 5 5&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	autoExpandColumn: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	plugins: [editor],</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	view: <span style="color: blue;">new</span> Ext.grid.GroupingView({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	markDirty: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: green;">// &#39;topbar&#39; daki butonlarımızı oluşturuyoruz.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	tbar: [{</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	iconCls: <span style="color: #a31515;">&#39;icon-user-add&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	text: <span style="color: #a31515;">&#39;Urun Ekle&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	handler: <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> e = <span style="color: blue;">new</span><br />
	Urun({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	ad: <span style="color: #a31515;">&#39;Meyve Adi&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	tip: <span style="color: #a31515;">&#39;Meyve&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	uretim: (<span style="color: blue;">new</span> Date()).clearTime(),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	adet: 1,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	fiyat: 10</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	});</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor.stopEditing();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	store.insert(0, e);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	grid.getView().refresh();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	grid.getSelectionModel().selectRow(0);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor.startEditing(0);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	ref: <span style="color: #a31515;">&#39;../removeBtn&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	iconCls: <span style="color: #a31515;">&#39;icon-user-delete&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	text: <span style="color: #a31515;">&#39;Urun Sil&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	disabled: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	handler: <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor.stopEditing();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> s =<br />
	grid.getSelectionModel().getSelections();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">for</span> (<span style="color: blue;">var</span><br />
	i = 0, r; r = s[i]; i++) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	store.remove(r);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	ref: <span style="color: #a31515;">&#39;../removeBtn&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	iconCls: <span style="color: #a31515;">&#39;icon-user-delete&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	text: <span style="color: #a31515;">&#39;Urun Sat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	disabled: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	handler: <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor.stopEditing();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">var</span> s =<br />
	grid.getSelectionModel().getSelections();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">for</span> (<span style="color: blue;">var</span><br />
	i = 0, r; r = s[i]; i++) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">if</span> (r.data[<span style="color: #a31515;">&#39;adet&#39;</span>]<br />
	== 1) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	para = para + r.data[<span style="color: #a31515;">&#39;fiyat&#39;</span>];</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	store.remove(r);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	Ext.MessageBox.alert(<span style="color: #a31515;">&#39;Satis&#39;</span>,<br />
	<span style="color: #a31515;">&#39;Satis Islemi tamamlandi. Urun kalmadi!Suan &#39;</span><br />
	+ para + <span style="color: #a31515;">&#39; kadar paraniz var.&#39;</span>);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">else</span> {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	para = para + r.data[<span style="color: #a31515;">&#39;fiyat&#39;</span>];</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	r.<span style="color: blue;">set</span>(<span style="color: #a31515;">&quot;adet&quot;</span>,<br />
	r.data[<span style="color: #a31515;">&#39;adet&#39;</span>] &#8211; 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	r.commit();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	Ext.MessageBox.alert(<span style="color: #a31515;">&#39;Satis&#39;</span>,<br />
	<span style="color: #a31515;">&#39;Satis Islemi tamamlandi. Suan &#39;</span> + para<br />
	+ <span style="color: #a31515;">&#39; kadar paraniz var.&#39;</span>);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">}],</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: green;">//Kolonlarımızı özellestirelim.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	columns: [</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	<span style="color: blue;">new</span> Ext.grid.RowNumberer(),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	id: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	header: <span style="color: #a31515;">&#39;Meyve Adi&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	dataIndex: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	width: 220,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	xtype: <span style="color: #a31515;">&#39;textfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	header: <span style="color: #a31515;">&#39;Tip&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	dataIndex: <span style="color: #a31515;">&#39;tip&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	width: 150,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	xtype: <span style="color: #a31515;">&#39;textfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	blankText: <span style="color: #a31515;">&quot;Bos Birakma!&quot;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	xtype: <span style="color: #a31515;">&#39;datecolumn&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	header: <span style="color: #a31515;">&#39;Uretim Tarihi&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	dataIndex: <span style="color: #a31515;">&#39;uretim&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	format: <span style="color: #a31515;">&#39;m/d/Y&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	width: 100,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	groupRenderer: Ext.util.Format.dateRenderer(<span style="color: #a31515;">&#39;M<br />
	y&#39;</span>),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	xtype: <span style="color: #a31515;">&#39;datefield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	allowBlank: <span style="color: blue;">false</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	blankText: <span style="color: #a31515;">&quot;Bos Birakma!&quot;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	maxValue: (<span style="color: blue;">new</span> Date()).format(<span style="color: #a31515;">&#39;m/d/Y&#39;</span>)</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	header: <span style="color: #a31515;">&#39;Adet&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	dataIndex: <span style="color: #a31515;">&#39;adet&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	minValue: 1,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	width: 50,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	xtype: <span style="color: #a31515;">&#39;numberfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	blankText: <span style="color: #a31515;">&quot;Bos Birakma!&quot;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	header: <span style="color: #a31515;">&#39;Fiyat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	dataIndex: <span style="color: #a31515;">&#39;fiyat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	minValue: 1,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	width: 50,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	xtype: <span style="color: #a31515;">&#39;numberfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	}</p>
<p style="margin: 0px;">}]</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
	});</p>
</div>
<p><!--EndFragment--></p>
<p>Öncellikle Grid&#39; imizin <em>store</em> özelliğine değer atamamız gerekiyor.<br />
Bu değer tabii ki bizim oluşturduğumuz <em>store </em>nesnesinin adı olacak.</p>
<p>Bu noktada size Grid nesnesinin <em>Top Bar</em> özelliğinden bahsetmek<br />
istiyorum. <em>Top Bar </em>bize grid üzerine buton koyma imkanı sağlayan bir<br />
bölüm. Bu sayede grid üzerinde işlem yaparken kullanacağımız butonları buraya<br />
tanımlayabiliyoruz. Yukarıda da görebileceğiniz üzere <em>Top Bar&#39; a </em>3 tane<br />
buton tanımladık. Bu butonların her birinin <em>text, disabled, iconCls</em><br />
gibi özellikleri var. Fakat <em><strong>handler</strong></em> özelliği diğer<br />
hepsinden daha çekici bana kalırsa. Bu özelliğe istersek işlem yapıcak<br />
foksiyonun sadece ismini tanımlarız, istersek örnekteki gibi fonksiyonu oraya<br />
yazarız.</p>
<p>Son olarak sıra geldi grid üzerindeki kolonları tanımlamaya. Kolonları<br />
özelleştirme noktasında da Ext bize baya bir esneklik sağlıyor. Başlığından,<br />
editörünün kısıtlanmasına kadar örnekte de görebileceğiniz bir çok<br />
özelleştirmede bulunabiliyoruz.</p>
<p>Böylece kodumuzdaki önemli noktaların ve kavramların üstünden geçmiş olduk.<br />
Kodun tamamı aşağıdaki gibidir.</p>
<p><em>[Default.aspx]</em></p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><span style="background: #ffee62;">&lt;%</span><span style="color: blue;">@</span><br />
		<span style="color: #a31515;">Page</span> <span style="color: red;"><br />
		Language</span><span style="color: blue;">=&quot;C#&quot;</span><br />
		<span style="color: red;">AutoEventWireup</span><span style="color: blue;">=&quot;true&quot;</span><br />
		<span style="color: red;">CodeFile</span><span style="color: blue;">=&quot;Default.aspx.cs&quot;</span><br />
		<span style="color: red;">Inherits</span><span style="color: blue;">=&quot;_Default&quot;</span><br />
		<span style="background: #ffee62;">%&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;"><span style="color: blue;">&lt;!</span><span style="color: #a31515;">DOCTYPE</span><br />
		<span style="color: red;">html</span> <span style="color: red;">PUBLIC</span><br />
		<span style="color: blue;">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span><br />
		<span style="color: blue;"><br />
		&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></p>
<p style="margin: 0px;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">html</span><br />
		<span style="color: red;">xmlns</span><span style="color: blue;">=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</span></p>
<p style="margin: 0px;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">head</span><br />
		<span style="color: red;">runat</span><span style="color: blue;">=&quot;server&quot;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">title</span><span style="color: blue;">&gt;&lt;/</span><span style="color: #a31515;">title</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: green;"><br />
		&lt;!&#8211;JS dosyaları&#8211;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/javascript&quot;</span><br />
		<span style="color: red;">src</span><span style="color: blue;">=&quot;extLib/adapter/ext/ext-base.js&quot;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/javascript&quot;</span><br />
		<span style="color: red;">src</span><span style="color: blue;">=&quot;extLib/ext-all.js&quot;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/javascript&quot;</span><br />
		<span style="color: red;">src</span><span style="color: blue;">=&quot;extLib/ux/RowEditor.js&quot;&gt;&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: green;"><br />
		&lt;!&#8211;CSS dosyaları&#8211;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/resources/css/ext-all.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/grid-examples.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/shared/examples.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/ux/css/RowEditor.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">style</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: #a31515;">.icon-user-add</span> {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: red;">background-image</span>:<br />
		<span style="color: blue;">url(extLib/shared/icons/fam/user_add.gif)</span><br />
		<span style="color: blue;">!important</span>;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: #a31515;">.icon-user-delete</span> {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: red;">background-image</span>:<br />
		<span style="color: blue;">url(extLib/shared/icons/fam/user_delete.gif)</span><br />
		<span style="color: blue;">!important</span>;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
		</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;/</span><span style="color: #a31515;">style</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">script</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/javascript&quot;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">// gelişi güzel isim oluşturma</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (<span style="color: blue;">function</span>()<br />
		{</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//Birkaç meyve adı tanımlaması yaptık</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> meyveler = [<span style="color: #a31515;">&#39;Elma&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Armut&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Muz&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Kavun&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Karpuz&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Portakal&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Nar&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Mandalina&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Yeni Dunya&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Ananas&#39;</span>];</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> firstLen = meyveler.length;</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//adından da anlaşılacağı üzere gelişi güzel<br />
		sayı değerleri oluşturmamıza</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//yarayan bir fonksiyon</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		Ext.ux.getRandomInt = <span style="color: blue;">function</span>(min,<br />
		max) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">return</span> Math.floor(Math.random() * (max<br />
		- min + 1)) + min;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//yine gelişi güzel bir şekilde meyve<br />
		isimleri oluşturacağız.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		Ext.ux.generateName = <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> name =<br />
		meyveler[Ext.ux.getRandomInt(0, firstLen - 1)] +<br />
		<span style="color: #a31515;">&quot; Meyvesi &quot;</span> +<br />
		Ext.ux.getRandomInt(0, 10);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//dataların &#39;ad&#39; degerlerini identity olarak<br />
		da kullandığımız için bir kez</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//oluşturduğumuz ismi tekrar<br />
		oluşturmamalıyız</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">if</span><br />
		(Ext.ux.generateName.usedNames[name]) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">return</span> Ext.ux.generateName();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		Ext.ux.generateName.usedNames[name] = <span style="color: blue;">true</span>;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">return</span> name;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		Ext.ux.generateName.usedNames = {};</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; })();</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ext.onReady(<span style="color: blue;">function</span>()<br />
		{</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> para = 0;</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//Urun adlı kayıt şablonunun alan adlarını<br />
		tanıtalım.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> Urun = Ext.data.Record.create([{</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		name: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		type: <span style="color: #a31515;">&#39;string&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		name: <span style="color: #a31515;">&#39;tip&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		type: <span style="color: #a31515;">&#39;string&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		name: <span style="color: #a31515;">&#39;uretim&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		type: <span style="color: #a31515;">&#39;date&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		dateFormat: <span style="color: #a31515;">&#39;n/j/Y&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		name: <span style="color: #a31515;">&#39;adet&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		type: <span style="color: #a31515;">&#39;integer&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		name: <span style="color: #a31515;">&#39;fiyat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		type: <span style="color: #a31515;">&#39;integer&#39;</span>}]);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//Kullanıcağımız dataları oluşturalım.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> genData =<br />
		<span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> data = [];</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> s = <span style="color: blue;">new</span><br />
		Date(2007, 0, 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> now = <span style="color: blue;"><br />
		new</span> Date(), i = -1;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">while</span> (s.getTime() &lt; now.getTime()) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> ecount = Ext.ux.getRandomInt(0,<br />
		1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">for</span> (<span style="color: blue;">var</span><br />
		i = 0; i &lt; ecount; i++) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> name = Ext.ux.generateName();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		data.push({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		uretim: s.clearTime(<span style="color: blue;">true</span>).add(Date.DAY,<br />
		Ext.ux.getRandomInt(0, 27)),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		ad: name,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		tip: <span style="color: #a31515;">&#39;Meyve&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		adet: Ext.ux.getRandomInt(10, 100),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		fiyat: Ext.ux.getRandomInt(10, 100)</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		s = s.add(Date.MONTH, 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">return</span> data;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//Json tipindeki datalarımızı tutacağımız<br />
		store objemiz</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> store = <span style="color: blue;"><br />
		new</span> Ext.data.GroupingStore({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		reader: <span style="color: blue;">new</span> Ext.data.JsonReader({<br />
		fields: Urun }),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//datayı nereden alıcagını belirttik.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		data: genData(),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		sortInfo: { field: <span style="color: #a31515;">&#39;uretim&#39;</span>,<br />
		direction: <span style="color: #a31515;">&#39;ASC&#39;</span> }</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//Editor butonlarımızın etiketlerin<br />
		dilediğimiz gibi değiştirebiliriz</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> editor =<br />
		<span style="color: blue;">new</span> Ext.ux.grid.RowEditor({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		saveText: <span style="color: #a31515;">&#39;Kaydet&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		cancelText: <span style="color: #a31515;">&#39;Iptal&#39;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//gridimizi yaratalım</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> grid = <span style="color: blue;"><br />
		new</span> Ext.grid.GridPanel({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//grid oluştururken &#39;store&#39; degerini vermeyi<br />
		unutmayınız.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		store: store,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		width: 600,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		region: <span style="color: #a31515;">&#39;center&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		margins: <span style="color: #a31515;">&#39;0 5 5 5&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		autoExpandColumn: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		plugins: [editor],</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		view: <span style="color: blue;">new</span> Ext.grid.GroupingView({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		markDirty: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">// &#39;topbar&#39; daki butonlarımızı<br />
		oluşturuyoruz.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		tbar: [{</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		iconCls: <span style="color: #a31515;">&#39;icon-user-add&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		text: <span style="color: #a31515;">&#39;Urun Ekle&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		handler: <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> e = <span style="color: blue;">new</span><br />
		Urun({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		ad: <span style="color: #a31515;">&#39;Meyve Adi&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		tip: <span style="color: #a31515;">&#39;Meyve&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		uretim: (<span style="color: blue;">new</span> Date()).clearTime(),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		adet: 1,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		fiyat: 10</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor.stopEditing();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		store.insert(0, e);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		grid.getView().refresh();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		grid.getSelectionModel().selectRow(0);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor.startEditing(0);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		ref: <span style="color: #a31515;">&#39;../removeBtn&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		iconCls: <span style="color: #a31515;">&#39;icon-user-delete&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		text: <span style="color: #a31515;">&#39;Urun Sil&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		disabled: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		handler: <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor.stopEditing();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> s =<br />
		grid.getSelectionModel().getSelections();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">for</span> (<span style="color: blue;">var</span><br />
		i = 0, r; r = s[i]; i++) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		store.remove(r);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		ref: <span style="color: #a31515;">&#39;../removeBtn&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		iconCls: <span style="color: #a31515;">&#39;icon-user-delete&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		text: <span style="color: #a31515;">&#39;Urun Sat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		disabled: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		handler: <span style="color: blue;">function</span>() {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor.stopEditing();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> s =<br />
		grid.getSelectionModel().getSelections();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">for</span> (<span style="color: blue;">var</span><br />
		i = 0, r; r = s[i]; i++) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">if</span> (r.data[<span style="color: #a31515;">&#39;adet&#39;</span>]<br />
		== 1) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		para = para + r.data[<span style="color: #a31515;">&#39;fiyat&#39;</span>];</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		store.remove(r);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		Ext.MessageBox.alert(<span style="color: #a31515;">&#39;Satis&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Satis Islemi tamamlandi. Urun<br />
		kalmadi!Suan &#39;</span> + para + <span style="color: #a31515;">&#39; kadar<br />
		paraniz var.&#39;</span>);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">else</span> {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		para = para + r.data[<span style="color: #a31515;">&#39;fiyat&#39;</span>];</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		r.<span style="color: blue;">set</span>(<span style="color: #a31515;">&quot;adet&quot;</span>,<br />
		r.data[<span style="color: #a31515;">&#39;adet&#39;</span>] &#8211; 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		r.commit();</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		Ext.MessageBox.alert(<span style="color: #a31515;">&#39;Satis&#39;</span>,<br />
		<span style="color: #a31515;">&#39;Satis Islemi tamamlandi. Suan &#39;</span> +<br />
		para + <span style="color: #a31515;">&#39; kadar paraniz var.&#39;</span>);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">}],</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//Kolonlarımızı özellestirelim.</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		columns: [</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">new</span> Ext.grid.RowNumberer(),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		id: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		header: <span style="color: #a31515;">&#39;Meyve Adi&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		dataIndex: <span style="color: #a31515;">&#39;ad&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		width: 220,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		xtype: <span style="color: #a31515;">&#39;textfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		header: <span style="color: #a31515;">&#39;Tip&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		dataIndex: <span style="color: #a31515;">&#39;tip&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		width: 150,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		xtype: <span style="color: #a31515;">&#39;textfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		blankText: <span style="color: #a31515;">&quot;Bos Birakma!&quot;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }, {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		xtype: <span style="color: #a31515;">&#39;datecolumn&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		header: <span style="color: #a31515;">&#39;Uretim Tarihi&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		dataIndex: <span style="color: #a31515;">&#39;uretim&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		format: <span style="color: #a31515;">&#39;m/d/Y&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		width: 100,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		groupRenderer: Ext.util.Format.dateRenderer(<span style="color: #a31515;">&#39;M<br />
		y&#39;</span>),</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		xtype: <span style="color: #a31515;">&#39;datefield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		allowBlank: <span style="color: blue;">false</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		blankText: <span style="color: #a31515;">&quot;Bos Birakma!&quot;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		maxValue: (<span style="color: blue;">new</span> Date()).format(<span style="color: #a31515;">&#39;m/d/Y&#39;</span>)</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		header: <span style="color: #a31515;">&#39;Adet&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		dataIndex: <span style="color: #a31515;">&#39;adet&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		minValue: 1,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		width: 50,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		xtype: <span style="color: #a31515;">&#39;numberfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		blankText: <span style="color: #a31515;">&quot;Bos Birakma!&quot;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		header: <span style="color: #a31515;">&#39;Fiyat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		dataIndex: <span style="color: #a31515;">&#39;fiyat&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		minValue: 1,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		width: 50,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		sortable: <span style="color: blue;">true</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		editor: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		xtype: <span style="color: #a31515;">&#39;numberfield&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		allowBlank: <span style="color: blue;">false</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		}</p>
<p style="margin: 0px;">}]</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: green;">//</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		<span style="color: blue;">var</span> layout =<br />
		<span style="color: blue;">new</span> Ext.Panel({</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		title: <span style="color: #a31515;">&#39;Meyveler&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		layout: <span style="color: #a31515;">&#39;border&#39;</span>,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		layoutConfig: {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		columns: 1</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		},</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		width: 600,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		height: 600,</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		items: [grid]</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		layout.render(Ext.getBody());</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		grid.getSelectionModel().on(<span style="color: #a31515;">&#39;selectionchange&#39;</span>,<br />
		<span style="color: blue;">function</span>(sm) {</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		grid.removeBtn.setDisabled(sm.getCount() &lt; 1);</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
		});</p>
<p style="margin: 0px;">&nbsp; <span style="color: blue;">&lt;/</span><span style="color: #a31515;">script</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/resources/css/ext-all.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/grid-examples.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/shared/examples.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">link</span><br />
		<span style="color: red;">rel</span><span style="color: blue;">=&quot;stylesheet&quot;</span><br />
		<span style="color: red;">type</span><span style="color: blue;">=&quot;text/css&quot;</span><br />
		<span style="color: red;">href</span><span style="color: blue;">=&quot;extLib/ux/css/RowEditor.css&quot;</span><br />
		<span style="color: blue;">/&gt;</span></p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;">&nbsp;</p>
<p style="margin: 0px;"><span style="color: blue;">&lt;/</span><span style="color: #a31515;">head</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;"><span style="color: blue;">&lt;</span><span style="color: #a31515;">body</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">form</span><br />
		<span style="color: red;">id</span><span style="color: blue;">=&quot;form1&quot;</span><br />
		<span style="color: red;">runat</span><span style="color: blue;">=&quot;server&quot;&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;</span><span style="color: #a31515;">div</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;/</span><span style="color: #a31515;">div</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;">&nbsp;&nbsp;&nbsp; <span style="color: blue;">&lt;/</span><span style="color: #a31515;">form</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;"><span style="color: blue;">&lt;/</span><span style="color: #a31515;">body</span><span style="color: blue;">&gt;</span></p>
<p style="margin: 0px;"><span style="color: blue;">&lt;/</span><span style="color: #a31515;">html</span><span style="color: blue;">&gt;</span></p>
</p></div>
<p><!--EndFragment--></p>
<p style="margin: 0px;">&nbsp;</p>
</div>
<p style="margin: 0px">Tüm bu işlemler sonrasında aşağıdaki gibi bir görüntü<br />
elde edeceğiz.</p>
<p style="margin: 0px">&nbsp;</p>
<p style="margin: 0px"><img alt="" height="316" src="http://www.yazgelistir.com/Makaleler/Resimler/1000002413_result1.jpg" width="602" /></p>
<p style="margin: 0px">&nbsp;</p>
<p style="margin: 0px">&nbsp;</p>
<p style="margin: 0px">Böylece bu makalemizin de sonuna gelmiş olduk. Eğer<br />
örnekteki herhangi bir yeri anlamadığınızı düşünüyorsanız bana mail aracılığıyla<br />
ulaşabilirsiniz.</p>
<p style="margin: 0px">&nbsp;</p>
<p style="margin: 0px">Serinin devamında sunucu-taraflı data işlemlerine<br />
değiniyor olacağız, yani işin içine biraz AJAX girecek. </p>
<p style="margin: 0px">&nbsp;</p>
<p style="margin: 0px">Herkese iyi kodlamalar.</p>
<p></span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center">
                                        </p>
<table id="Table21" cellspacing="0" cellpadding="0" width="100%" border="0">
<tbody>
<tr>
<td class="menuLeftCaption" colspan="3">
]]></content:encoded>
			<wfw:commentRss>http://www.systemdoktoru.com/2010/04/extjs-coolite-ne-ola-ki-yazi-dizisi-vol-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Dynamic Data Web Site ile File Upload İşlemleri</title>
		<link>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-web-site-ile-file-upload-islemleri-2/</link>
		<comments>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-web-site-ile-file-upload-islemleri-2/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 10:26:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Dynamic Data Web Site ile]]></category>
		<category><![CDATA[File Upload İşlemleri]]></category>

		<guid isPermaLink="false">http://www.systemdoktoru.com/?p=13</guid>
		<description><![CDATA[ 
 

MetaData üzerinden öznitelik ataması yapılarak doğrulama, biçimleme ve özel alan şanlonlarını(FieldTemplates) nasıl kullanacağımızdan bahsetmiştik.
Bu makale özel özniteliklerin ve alan şablonlarının geliştirilmesi konusunu içerecektir. Bu nedenle FileUpload kontrolünün kullanımı ve alan şablonlarının çalışma mantığıyla özel özniteliklerin kullanımı hakkında bilgi sahibi olacağız.
Önceki makalemde bahsettiğim gibi ASP.NET Dynamic Data Web Site ile FileUpload işlemlerini klasik yöntemlerle kullanamıyoruz.





ASP.NET Dynamic [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<td colspan="3"> </td>
<p><span id="lblMakale"><br />
<!-- .style2 {color: #006600} -->MetaData üzerinden öznitelik ataması yapılarak doğrulama, biçimleme ve özel alan şanlonlarını(FieldTemplates) nasıl kullanacağımızdan bahsetmiştik.</p>
<p>Bu makale özel özniteliklerin ve alan şablonlarının geliştirilmesi konusunu içerecektir. Bu nedenle FileUpload kontrolünün kullanımı ve alan şablonlarının çalışma mantığıyla özel özniteliklerin kullanımı hakkında bilgi sahibi olacağız.</p>
<p>Önceki makalemde bahsettiğim gibi ASP.NET Dynamic Data Web Site ile FileUpload işlemlerini klasik yöntemlerle kullanamıyoruz.</p>
<p></span></p>
<table style="width: 409px; height: 83px;" border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002422_postit_733719.jpg" alt="" /></td>
<td>ASP.NET Dynamic Data Web Sitesinde Ajax Toolkit ile birlikte kullanıyorsanız ve FileUpload bileşeniniz <strong>UpdatePanel </strong>içerisinde yer alıyorsa <strong>ScriptManager </strong>nesnesinin <strong>EnablePartialRendering </strong>özelliğini <strong><span style="color: #ff0000;">false</span></strong><span style="color: #ff0000;"> </span>olarak atamanız gerekiyor.</td>
</tr>
</tbody>
</table>
<p><span id="lblMakale">Kodlamaya başlamadan önce yapılması gereken işlemleri özetlemenin faydalı olduğunu düşünüyorum. Kodlama detayları ilgili sınıfların içinde yer almaktadır.</p>
<ol>
<li>Zorunlu olmasa da dosyanın sunucuya yükleme işleminin gerçekleştirileceği yardımcı bir sınıf.</li>
<li>Her bir dosya yükleme alanı için dosya türü, boyutu vb. bildirimleri yapmak için öznitelik tabanlı bir sınıf</li>
<li>Dosya yükleme alanlarının ekleme ve güncelleme ekranı için FileUpload kontrolü listeleme ve detay sayfaları için ise dosya türüne göre yüklenen dosyaya uygun simge, önizleme vb. için alan şablonlarının(FieldTemplate) gerekli hazırlanması.</li>
<li>İşlevin kazandırılacağı alanlara gerekli öznitelik tanımlamasının yapılması</li>
</ol>
<p>Temel düzeyde dosya yükleme işlemini gerçekleştirmek üzere aşağıdaki sınıfı kullanacağız<br />
<strong><br />
FileUploadUtil.cs </strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.IO;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Extentions;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Text.RegularExpressions;

</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.Utils
{
    </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">
    </span><span style="color: #808080;">///</span><span style="color: #008000;"> Ömer Faruk ZORLU
    </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;
</span><span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> FileUploadUtil
    {
        </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> _fileName;

        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Dosyanın yükleneceği fiziksel konum
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Örnek kullanım: HttpContext.Current.Server.MapPath("~/Uploads/")
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> UploadDictionaryPath { </span><span style="color: #0000ff;">get</span><span style="color: #000000;">; </span><span style="color: #0000ff;">set</span><span style="color: #000000;">; }

        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Yükleme işlemi başarısız olmuşsa bu değer
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> üzerinden hata mesajı okunabilir
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> ErrorMessage { </span><span style="color: #0000ff;">get</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">set</span><span style="color: #000000;">; }

        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Değer atama işleminin ardından güvenlik, tekillik gibi
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> nedenler gereği isim değiştirilmelidir.
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> FileName
        {
            </span><span style="color: #0000ff;">get</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> _fileName; }
            </span><span style="color: #0000ff;">set</span><span style="color: #000000;">
            {
                </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> strExtention = Path.GetExtension(value);

                </span><span style="color: #008000;">// ToSEFString methodu gönderilen string değeri arama
                // motoru dostu karakterler ile değiştirir
                //
                // RandomHelper sınıfı doğru rasgele karakterler ve
                // sayılar üretmek için kullanılıyor
                // Bağlantı: </span><span style="color: #008000; text-decoration: underline;">http://tinyurl.com/y8of6sn</span><span style="color: #008000;">
</span><span style="color: #000000;">                _fileName = Path.GetFileNameWithoutExtension(value).ToSEFString()
                + RandomHelper.RandomString(</span><span style="color: #800080;">10</span><span style="color: #000000;">, </span><span style="color: #0000ff;">true</span><span style="color: #000000;">)
                + strExtention;
            }
        }

        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> ctor
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> FileUploadUtil()
        {
            _fileName = </span><span style="color: #0000ff;">string</span><span style="color: #000000;">.Empty;
        }

        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Dosya yükleme işleminin tetiklenmesi için bu method çağırılmalıdır.
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="postedFile"&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Bu değişken klasik html input alanları tarafından post edilen
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> verilerinde methodu kullanabilmeleri için bu tipte tanımlanmıştır.
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> FileUpload kontrolü kullanılacaksa PostedFile özelliği gönderilebilir.
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/param&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="fuAttribute"&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Dosya yükleme işleminin gerçekleşmesi ile ilgili bilgiler içeren sınıftır
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Attribute sınıfından türetilmiştir. MetaColumn ile kullanılacaksa ilgili
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> alan üzerinde tanımlı özniteliğin gönderilmesi yeterlidir.
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/param&gt;</span><span style="color: #008000;">
        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;returns&gt;&lt;/returns&gt;
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> UploadFile(HttpPostedFile postedFile, FileUploadAttribute fuAttribute)
        {
            </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> Checks
            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (postedFile.ContentLength &lt;= </span><span style="color: #800080;">0</span><span style="color: #000000;">)
            {
                </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.ErrorMessage = </span><span style="color: #800000;">"Veri akışı bulunamadı"</span><span style="color: #000000;">;
                </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;
            }

            </span><span style="color: #008000;">// Maksimum dosya boyutu öznitelikte atanan değere göre kontrol ediliyor.
</span><span style="color: #000000;">            </span><span style="color: #0000ff;">long</span><span style="color: #000000;"> FileSize = postedFile.ContentLength;
            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (FileSize &gt; (fuAttribute.MaximumFileSize * </span><span style="color: #800080;">1024000</span><span style="color: #000000;">))
            {
                </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.ErrorMessage = </span><span style="color: #0000ff;">string</span><span style="color: #000000;">.Format(</span><span style="color: #800000;">"Maksimum dosya boyutu izin verilenden fazla olamaz. İzin verilen maksimum dosya boyutu: {0}"</span><span style="color: #000000;">, fuAttribute.MaximumFileSize);
                </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;
            }

            </span><span style="color: #008000;">// Dosya uzantısı öznitelikte atanan değere göre kontrol ediliyor.
            // İçerik türüne(MIME) görede kontrol edilebilir.
</span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (!Regex.IsMatch(Path.GetExtension(_fileName), fuAttribute.AllowedFileFormats, RegexOptions.IgnoreCase))
            {
                </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.ErrorMessage = </span><span style="color: #0000ff;">string</span><span style="color: #000000;">.Format(</span><span style="color: #800000;">"Dosya türüne izin verilmiyor. İzin verilen dosya formatları: {0}"</span><span style="color: #000000;">, fuAttribute.AllowedFileFormats);
                </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;
            }
            </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">

            </span><span style="color: #008000;">// Klasör yoksa oluştur.
</span><span style="color: #000000;">            DirectoryInfo DInfo = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DirectoryInfo(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.UploadDictionaryPath);
            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (!DInfo.Exists)
                DInfo.Create();

            </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> WriteStreamToFile
            </span><span style="color: #008000;">// Dosyayı kaydet
</span><span style="color: #000000;">            </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> strFullFileName = </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.UploadDictionaryPath + </span><span style="color: #0000ff;">this</span><span style="color: #000000;">._fileName;
            postedFile.SaveAs(strFullFileName);
            </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">

            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">true</span><span style="color: #000000;">;
        }
    }
}</span></pre>
</div>
<p>Yukarıdaki sınıf içinde kullanılan FileUploadAttribute sınıfını dosya yükleme işleminin gerçekleşmesini istediğimiz kolon için gerekli bildirimlerin yapılması için kullanacağız . Bu sınıfın kodlaması aşağıdaki gibidir.</p>
<div class="codeBlock">using System;</div>
<p>namespace Eposta.Core.CustomAttributes<br />
{<br />
    /// &lt;summary&gt;<br />
    /// Ömer Faruk ZORLU<br />
    /// &lt;/summary&gt;<br />
    [AttributeUsage(AttributeTargets.All, AllowMultiple = true)]<br />
    public class FileUploadAttribute : Attribute<br />
    {<br />
        /// &lt;summary&gt;<br />
        /// <span class="style2">Yüklenecek dosyanın maksimum boyutunun megabyte karşılığıdır.</span><br />
        /// &lt;/summary&gt;<br />
        public short MaximumFileSize { get; set; }</p>
<p>        /// &lt;summary&gt;<br />
        /// <span class="style2">Bu özellik adının kontrol edilmesi için kullanılır.</span><br />
        /// <span class="style2">Kontrol işlemi RegularExpressions(Regex) sınıfı ile</span><br />
        /// <span class="style2">gerçekleştirilir.</span><br />
        ///<br />
        /// <span class="style2">Örnek Kullanım: &#8220;jpg|gif|png|JPG|GIF|PNG&#8221;</span><br />
        /// &lt;/summary&gt;<br />
        public string AllowedFileFormats { get; set; }</p>
<p>        /// &lt;summary&gt;<br />
        /// <span class="style2">Yükleme işleminin gerçekleştirileceği klasörün fiziksel </span><br />
        /// <span class="style2">yolunu saklar.</span><br />
        ///<br />
        /// <span class="style2">Örnek Kullanım: HttpContext.Current.Server.MapPath(&#8220;~/Uploads/&#8221;)</span><br />
        /// &lt;/summary&gt;<br />
        public string UploadDictionaryPath { get; set; }<br />
    }<br />
}</p>
<p>Buraya kadarki kodlamalarla iş katmanı için yükleme işini üstlenecek sınıfların kodlamasını tamamlamış olduk. Sırada bu katmanı istediğimiz kolon üzerinde kullanabilmek için gerekli alan şablonunu tasarlama işi var.  Daha önceki makalelerde belirttiğim gibi güncelleme, ekleme ve listeleme, detay sayfa şablonları için iki adet alan şablonu hazırlanmalıdır. Ekleme ve günnceleme için gerekli alan şablonunun kodları aşağıdaki gibidir.</p>
<p><strong>MyFileUpload_Edit.ascx</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #000000;">&lt;%@ Control Language=</span><span style="color: #800000;">"C#"</span><span style="color: #000000;"> CodeFile=</span><span style="color: #800000;">"MyUpload_Edit.ascx.cs"</span><span style="color: #000000;"> Inherits=</span><span style="color: #800000;">"MyUpload_Edit"</span><span style="color: #000000;"> %&gt;
&lt;asp:Label ID=</span><span style="color: #800000;">"Label1"</span><span style="color: #000000;"> runat=</span><span style="color: #800000;">"server"</span><span style="color: #000000;"> Text=</span><span style="color: #800000;">'&lt;%# FieldValueEditString %&gt;'</span><span style="color: #000000;">&gt;&lt;/asp:Label&gt;&lt;br /&gt;
&lt;asp:FileUpload ID=</span><span style="color: #800000;">"FileUpload1"</span><span style="color: #000000;"> runat=</span><span style="color: #800000;">"server"</span><span style="color: #000000;"> /&gt;
&lt;asp:CustomValidator ID=</span><span style="color: #800000;">"CustomValidator1"</span><span style="color: #000000;"> runat=</span><span style="color: #800000;">"server"</span><span style="color: #000000;">
    ErrorMessage=</span><span style="color: #800000;">"CustomValidator"</span><span style="color: #000000;">&gt;&lt;/asp:CustomValidator&gt;</span></pre>
</div>
<p><strong>MyFileUpload_Edit.ascx.cs</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Specialized;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Utils;

</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> MyUpload_Edit : System.Web.DynamicData.FieldTemplateUserControl
{
    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Load(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)
    {

    }

    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> OnDataBinding(EventArgs e)
    {
        </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.OnDataBinding(e);
    }

    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> ExtractValues(IOrderedDictionary dictionary)
    {
        </span><span style="color: #008000;">// DataControl nesnesi olarak Label1 atandığı için
        // dosya yüklemenmesede varsayılan olarak zaten kayıtlı olan
        // veri dönüş değerinde kullanılmak üzere atanıyor
</span><span style="color: #000000;">        dictionary[Column.Name] = ConvertEditedValue(Label1.Text);

        </span><span style="color: #008000;">// Bu kolon üzerinde atanması zorunlu olan FileUploadAttribute
        // özniteliği alınıyor.
</span><span style="color: #000000;">        var fuAttribute = </span><span style="color: #0000ff;">base</span><span style="color: #000000;">.Column.Attributes.OfType&lt;FileUploadAttribute&gt;().FirstOrDefault();
        </span><span style="color: #008000;">// FileUploadAttribute ataması yoksa dön
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (fuAttribute == </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;">;

        </span><span style="color: #008000;">// Dosya seçilmişse
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (FileUpload1.HasFile)
        {
            </span><span style="color: #0000ff;">try</span><span style="color: #000000;">
            {
                FileUploadUtil fuUtil = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> FileUploadUtil();
                </span><span style="color: #008000;">// Atama işleminin ardından dosyaya yeni isim atanıyor.
</span><span style="color: #000000;">                fuUtil.FileName = FileUpload1.FileName;
                fuUtil.UploadDictionaryPath = fuAttribute.UploadDictionaryPath;

                </span><span style="color: #008000;">// Dosyayı yükle ve yeni dosya adını dönüş değeri olarak ata.
                // Hata kontrolüne karşı ilgili değişken(string ErrorMessage)
                // kontrol edilebilir.
</span><span style="color: #000000;">                </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (fuUtil.UploadFile(FileUpload1.PostedFile, fuAttribute))
                    dictionary[Column.Name] = fuUtil.FileName;
            }
            </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception Ex)
            {
                </span><span style="color: #008000;">// Denetlenmemiş herhangi bir hata oluşursa sayfanın tamamen
                // hata vermesi yerine hata mesajını hata özetlerinde ve atama
                // işleminin yapıldığı alanın yanında görünmesi için CustomValidator1
                // nesnesinden yararlanılıyor.
</span><span style="color: #000000;">                CustomValidator1.IsValid = </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;
                CustomValidator1.ErrorMessage = Ex.Message;
            }
        }
    }

    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> Control DataControl
    {
        </span><span style="color: #0000ff;">get</span><span style="color: #000000;">
        {
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> Label1;
        }
    }
}</span></pre>
</div>
<p>Listeleme ve detay sayfa şablonlarında kullanılacak alan şablonu kodları aşağıdaki gibidir. Yüklenen dosyaların(ilgili verilerin) yalnızca    resim dosyası olduğu öngörülerek yazılmıştır. Dosya tipi yada türüne göre özelleştirilmiş görüntüleme tekniği kullanılabilir.</p>
<p><strong>MyUpload.ascx.cs</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;
</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI;

</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> MyUpload : System.Web.DynamicData.FieldTemplateUserControl
{
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">override</span><span style="color: #000000;"> Control DataControl
    {
        </span><span style="color: #0000ff;">get</span><span style="color: #000000;">
        {
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> imgThumbnail;
        }
    }

    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> GetSrcUrl()
    {
        </span><span style="color: #008000;">// Veri boş ya da null ise NoImage.gif dönder
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (String.IsNullOrEmpty(FieldValueString)) </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #800000;">"NoImage.gif"</span><span style="color: #000000;">;

        </span><span style="color: #008000;">// Veri http, ftp vb herhangi bir protokolü kullanıyor ise
        // olduğu gibi değilse upload klasörünü kök dizin alarak dönder
</span><span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (-</span><span style="color: #800080;">1</span><span style="color: #000000;"> &lt; FieldValueString.IndexOf(</span><span style="color: #800000;">"://"</span><span style="color: #000000;">))
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> FieldValueString;
        </span><span style="color: #0000ff;">else</span><span style="color: #000000;">
            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #800000;">"~/uploads/"</span><span style="color: #000000;"> + FieldValueString;
    }
} </span></pre>
</div>
<p><em>Dynamic Data’nın en sevdiğim kısımı tabiki MetaData üzerinde yapılan tanımlamalardır. O kadar çok kod yazmak gerekiyorki daha ne yapalım birde diyenleri duyar gibiyim.</em></p>
<p></span></p>
<table border="0" cellspacing="1" cellpadding="1" width="100%">
<tbody>
<tr>
<td><img style="width: 23px; height: 25px;" src="http://www.yazgelistir.com/Makaleler/Resimler/1000002422_postit_733719.jpg" alt="" /></td>
<td><span style="text-decoration: underline;">Dynamic Data ile yapılan her geliştirme tasarruf niteliği taşır. </span></td>
</tr>
</tbody>
</table>
<p><span id="lblMakale">Geliştirdiğimiz dosya yükleme aracı için klasik kodlama kullansaydık benzer kodları kullanmak istediğimiz sayfalarda(aynı sayfada pek çok kere de olabilir) harcanan efor göz önüne alınmalıdır. Yapılan geliştirme bir sonraki proje için <strong><span style="text-decoration: underline;">yatırımdır</span></strong>. Ayrıca geriye dönük olarak yapılan projelerde kullan/a/mamak için bir neden söz konusu değildir.</p>
<p>Şimdi en zevkli kısıma gelelim. Bundan böyle dosya yükleme(FileUpload) işlemi ile çalışmasını istediğiniz herhangi bir kolon için meta data üzerinde aşağıdaki gibi bir tanımlama yapmanız yeterli oluyor.</p>
<p><em><strong>NORTWIND </strong></em>veritabanında bulunan <em>Employee </em>tablosundaki <span style="text-decoration: underline;"><em>PhotoPath </em></span>kolonu için yapılan örnek tanımlama:</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.ComponentModel.DataAnnotations;

[MetadataType(</span><span style="color: #0000ff;">typeof</span><span style="color: #000000;">(EmployeeMetaData))]
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Employee
{

}

</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> EmployeeMetaData
{
    [Eposta.Core.CustomAttributes.FileUpload(
        AllowedFileFormats = </span><span style="color: #800000;">"jpg|gif|png|JPG|GIF|PNG"</span><span style="color: #000000;">,
        MaximumFileSize = </span><span style="color: #800080;">1</span><span style="color: #000000;">, </span><span style="color: #008000;">// MB
</span><span style="color: #000000;">        UploadDictionaryPath = </span><span style="color: #800000;">"~/uploads/"</span><span style="color: #000000;">
        )]
    [UIHint(</span><span style="color: #800000;">"MyUpload"</span><span style="color: #000000;">)]
    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> PhotoPath { </span><span style="color: #0000ff;">get</span><span style="color: #000000;">; </span><span style="color: #0000ff;">set</span><span style="color: #000000;">; }
} </span></pre>
</div>
<p>Ekran görüntüleri<br />
<em>Listemele ve detay sayfa şablonlarında:</em></p>
<p style="text-align: center;"><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002422_1_733710.JPG" alt="" /></p>
<p><em>Ekleme ve Güncelleme sayfa şablonlarında:</em></p>
<p><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002422_2_733710.JPG" alt="" /></p>
<p>Meraklısından meraklılarına faydalı olması dileğiyle. Mutlu kodlar.</p>
<p><strong>Ömer Faruk ZORLU</strong></p>
<td align="center"> </td>
<p></span></p>
<table id="Table21" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td class="menuLeftCaption" colspan="3"> </td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-web-site-ile-file-upload-islemleri-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Dynamic Data &#8211; Gelişmiş Scaffolding</title>
		<link>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-gelismis-scaffolding-2/</link>
		<comments>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-gelismis-scaffolding-2/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 16:26:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Dynamic Data]]></category>
		<category><![CDATA[Gelişmiş Scaffolding]]></category>

		<guid isPermaLink="false">http://www.systemdoktoru.com/?p=12</guid>
		<description><![CDATA[ 
 
Merhabalar, daha önce ASP.NET Dynamic Data(yazının devamında DD kısaltmasını kullanacağım) hakkında bazı bilgileri yayınlamıştım. Yeni bir makale konusunda düşünürken makale konusu olarak gerçek bir DD projesinde kullanıcı tarafından gelebilecek isteklerin hızlı bir şekilde nasıl karşılanabilineceğinden bahsetmenin uygun olduğuna karar verdim.
Yazılımcı gözüyle değerlendirmek gerekirse kullanıcı gereksinimleri konusunda gözden kaçan bir çok gereksinimi görülmeyebilir.  Örneğin bir tablo [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<td colspan="3"> </td>
<p><span id="lblMakale">Merhabalar, daha önce ASP.NET Dynamic Data(yazının devamında <strong><span class="style1"><em><span class="style2">DD</span></em></span></strong> kısaltmasını kullanacağım) hakkında bazı bilgileri yayınlamıştım. Yeni bir makale konusunda düşünürken makale konusu olarak gerçek bir DD projesinde kullanıcı tarafından gelebilecek isteklerin hızlı bir şekilde nasıl karşılanabilineceğinden bahsetmenin uygun olduğuna karar verdim.<br />
Yazılımcı gözüyle değerlendirmek gerekirse kullanıcı gereksinimleri konusunda gözden kaçan bir çok gereksinimi görülmeyebilir.  Örneğin bir tablo içindeki kayıtların listelenmesi yazılımcı için gayet yeterlidir ancak kullanıcı gözüyle bakıldığında her şeyin listelenmesi çoğu zaman gereksiz olacaktır. Bu kapsamda kullanıcı isteklerine karşılık sorun çözümüyle alakalı <strong><em>makalele dizisi</em></strong>nin ilkini yazmaya başlıyorum. Daha önceki makalelerde bahsettiğim isimlendirme, biçimlendirme vb. gibi temel işlemlere bu makalede değinmeyeceğim.</p>
<p>Kullanıcı tarafında tablo üzerindeki her alanın(<em>column</em>) görüntülenmesi istenmeyebilir. Bazı durumlarda ise tüm kayıtların listelenmesi kullanım kolaylığı açısından sıkıntılı olabilir.</p>
<p>Scaffolding tekniğiyle istenilen alanların tüm şablonlarda görüntülenmesini engelleyebiliyoruz. Özellikle listeleme sayfalarında tüm alanların sayfada görünür halde olması yatay olarak uzayan bir sayfaya neden olur ancak bu alanları klasik scaffolding tekniği ile gizlersek diğer şablonlardanda kayboluverir.  İşte burada asıl sorun ortaya çıkıyor: Gizlenen alanların kullanıcı tarafından düzenlenmesi gerekiyorsa yada detaylı görüntüleme şablonunda tüm alanların görüntülenmesi gerekiyorsa ne yapacağız?</p>
<div><span id="ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolder1_lblDetail"></span></div>
<p><span id="ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolder1_lblDetail"> </span></span></p>
<table border="0" cellspacing="1" cellpadding="1">
<tbody>
<tr>
<td> </td>
<td>Aletleri geliştirmek DD için her zaman kazanımdır. Bu senaryoda scaffolding tekniğini sayfa şablonlarına göre nasıl özelleştirebileceğimizi öğreneceğiz.</td>
</tr>
</tbody>
</table>
<p><span id="lblMakale"><span id="ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolder1_lblDetail"> </p>
<p></span>Kullanabileceğimiz veri bileşenleri(<em>GridView, FormView, DetailsView vb.</em>) veri listeleme sırasında listeleme işlemi için <strong>IAutoFieldGenerator</strong> arayüzünü uygulayan bir sınıf ile veri alanları üzerindeki kararını verir. Varsayılan alan oluşturucularda verideki tüm alanlar DD bildirimleri uygunlandıktan sonra(<em>scaffolding gibi kısıtlamalar vb.</em>) listelenir. Yapılması gereken şey ise veri listeleme işini gerçekleştirme görevini yazacağımız bir sınıfın üstlenmesidir.</p>
<p><strong>IAutoFieldGenerator arayüzünü uygulayan sınıfımız:</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator{    </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;    </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI;    </span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;     </span><span style="color: #808080;">

    ///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">    </span><span style="color: #808080;">///</span><span style="color: #008000;"> Bu sınıf veri listelemesini işlemlerini    </span><span style="color: #808080;">///</span><span style="color: #008000;"> özelleştirmek amacıyla yazılmıştır.     </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CustomColumnGenerator : IAutoFieldGenerator    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Veri listelemesi için incelenecek        </span><span style="color: #808080;">///</span><span style="color: #008000;"> tablo değişkenini tutar        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable mTable = </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;        </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> IAutoFieldGenerator Members        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Listeleme işlemini gerçekleştirecek method        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="control"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> System.Collections.ICollection GenerateFields(Control control)        {            </span><span style="color: #008000;">// Uygun kolonların biriktirildiği koleksiyon</span><span style="color: #000000;">            List&lt;DynamicField&gt; dynFieldList = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> List&lt;DynamicField&gt;();            </span><span style="color: #008000;">// MetaTable atanmışsa</span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mTable != </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)            {                </span><span style="color: #008000;">// Her bir MetaColumn için</span><span style="color: #000000;">                </span><span style="color: #0000ff;">foreach</span><span style="color: #000000;"> (MetaColumn mColumn </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.mTable.Columns)                {                    </span><span style="color: #008000;">// Scaffolding ataması yapılmışsa koleksiyona eklenmesi                    // uygun değildir. Eğer bu kontrol yapılmazsa ilgili                    // alan görüntülenecektir. Çünkü tüm sorumluluğu almış                    // bulunuyoruz</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (                            !mColumn.Scaffold                        )                        </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;                     DynamicField dynField = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DynamicField();                    dynField.DataField = mColumn.Name;                    dynFieldList.Add(dynField);                }            }            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> dynFieldList;        }        </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">    }}

</span></pre>
</div>
<p><span class="style4"><em>Scaffolding</em></span> tekniğini denetleyerek görüntüleme işlemini üstlenen sınıfımız artık hazır. Şimdi sıra şablonlara göre bu denetleme işlemine geldi. Varsayılan şablonlar için bir enum tanımlayıp GenerateFields methodunda şablona görede bir denetleme yapmamız gerecektir.</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.Enums{    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">enum</span><span style="color: #000000;"> PageTemplateType    {        Details,        Edit,        Insert,        List,        ListDetails    }}

</span></pre>
</div>
<p>Özelleştirme işlemlerinin uygulanabilmesi için özel bir öznitelik geliştirip bildirimlerin bu öznitelik üzerinden gerçekleştirmesi gerekiyor bunun için aşağıdaki sınıfı kullanabiliriz.</p>
<p>[more]</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Enums;

</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.CustomAttributes{    [AttributeUsage(AttributeTargets.Property)]    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CustomHiddenColumnAttribute : Attribute    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> İlgili alanın gizlenmesi gereken sayfa şablonları belirleniyor        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> PageTemplateType[] PageTemplateTypes { </span><span style="color: #0000ff;">get</span><span style="color: #000000;">; </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> </span><span style="color: #0000ff;">set</span><span style="color: #000000;">; }        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Parametresiz bir constructor yazılması mecburi ancak        </span><span style="color: #808080;">///</span><span style="color: #008000;"> kullanılmaması için hata fırlatılması daha uygun        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> CustomHiddenColumnAttribute()        {            </span><span style="color: #0000ff;">throw</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> InvalidOperationException();        }        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Sayfa şablonlarının atama işleminin kolaylaştırılması        </span><span style="color: #808080;">///</span><span style="color: #008000;"> nedeniyle params yöntemi kullanılmıştır. Öznitelik         </span><span style="color: #808080;">///</span><span style="color: #008000;"> tanımlamasında AllowMultiple=true atamasıda yapılabilir        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="PageTemplateParams"&gt;&lt;/param&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> CustomHiddenColumnAttribute(</span><span style="color: #0000ff;">params</span><span style="color: #000000;"> PageTemplateType[] PageTemplateParams)        {            </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.PageTemplateTypes = PageTemplateParams;        }    }}

</span></pre>
</div>
<p>Bu özniteliğin örnek tanımlaması aşağıdaki gibidir. Daha öncede belirttiğim gibi öznitelik yazmayı çok <span class="style4">severim</span> <img src='http://www.systemdoktoru.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Bundan böyle sadece aşağıdaki kodu kullarak tüm kodu yazmadan işimizi halledebiliriz.</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #000000;"><strong>[CustomHiddenColumn(        PageTemplateType.List, PageTemplateType.ListDetails)]</strong></span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">string</span><span style="color: #000000;"> <strong>SmtpHost</strong> { </span><span style="color: #0000ff;">get</span><span style="color: #000000;">; </span><span style="color: #0000ff;">set</span><span style="color: #000000;">; }

</span></pre>
</div>
<p>Madem bu kadar kod yazdık birde MetaColumn nesneleri için genişletilmiş bir method yazarak kolonda ve şablona göre gizlilik bildirimi yapılmışmı diye kontrol edelimki her seferinde bir yığın kod yazmaktan kurtulalım.</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes.UIHint;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Enums;</span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;"> </span><span style="color: #808080;">///</span><span style="color: #008000;"> Ömer Faruk ZORLU</span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.Extentions{    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> MetaColumnExtentions    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Sayfa şablonuna göre alanın gizlilik durumunu dönderir        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="mColumn"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="pTemplateType"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">static</span><span style="color: #000000;"> </span><span style="color: #0000ff;">bool</span><span style="color: #000000;"> IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;"> System.Web.DynamicData.MetaColumn mColumn, PageTemplateType pTemplateType)        {            </span><span style="color: #008000;">// Kolon üzerinde atanmış ustomHiddenColumn özniteliği alınıyor            // Eğer çoklu tanımlama(AllowMultiple) ya izin verilmişse bir            // döngü içerisinde kontrol edilmesi gerekir</span><span style="color: #000000;">            CustomHiddenColumnAttribute chCAttr =                mColumn.Attributes.OfType&lt;CustomHiddenColumnAttribute&gt;().FirstOrDefault();               </span><span style="color: #008000;">//  Herhangi bir öznitelik ataması yoksa gizli değildir</span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (chCAttr == </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)                </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;             </span><span style="color: #008000;">// İlgili alan için yapılan gizlilik bildirimleri parametrede            // gönderilmiş sayfa şablonunu içeriyorsa gizlidir</span><span style="color: #000000;">            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> chCAttr.PageTemplateTypes.Contains(pTemplateType);;        }    }}

</span></pre>
</div>
<p>Artık daha önce yazdığımız alan oluşturucu sınıf üzerinde özel gizleme yapımızı denetleyen kodlar yazabiliriz. Yukarıda yazdığımız sınıfa yeni eklenen kodlar kalın olarak yazılmıştır.</p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Collections.Generic;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Extentions;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Enums; </span><span style="color: #0000ff;">namespace</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator{    </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">    </span><span style="color: #808080;">///</span><span style="color: #008000;"> Bu sınıf veri listelemesini işlemlerini    </span><span style="color: #808080;">///</span><span style="color: #008000;"> özelleştirmek amacıyla yazılmıştır.     </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">    </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> CustomFieldGenerator : IAutoFieldGenerator    {        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Veri listelemesi için incelenecek        </span><span style="color: #808080;">///</span><span style="color: #008000;"> tablo değişkenini tutar        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable mTable = </span><span style="color: #0000ff;">null</span><span style="color: #000000;">;

        </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> PageTemplateType pTemplateType;         </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> ctor         </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> CustomFieldGenerator(MetaTable _mTable, PageTemplateType _pTemplateType)        {            </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.mTable = _mTable;            </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType = _pTemplateType;        }         </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">         </span><span style="color: #0000ff;">#region</span><span style="color: #000000;"> IAutoFieldGenerator Members        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> Listeleme işlemini gerçekleştirecek method        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;/summary&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;param name="control"&gt;&lt;/param&gt;</span><span style="color: #008000;">        </span><span style="color: #808080;">///</span><span style="color: #008000;"> </span><span style="color: #808080;">&lt;returns&gt;&lt;/returns&gt;</span><span style="color: #000000;">        </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> System.Collections.ICollection GenerateFields(Control control)        {            </span><span style="color: #008000;">// Uygun kolonların biriktirildiği koleksiyon</span><span style="color: #000000;">            List&lt;DynamicField&gt; dynFieldList = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> List&lt;DynamicField&gt;();            </span><span style="color: #008000;">// MetaTable atanmışsa</span><span style="color: #000000;">            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mTable != </span><span style="color: #0000ff;">null</span><span style="color: #000000;">)            {                </span><span style="color: #008000;">// Her bir MetaColumn için</span><span style="color: #000000;">                </span><span style="color: #0000ff;">foreach</span><span style="color: #000000;"> (MetaColumn mColumn </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.mTable.Columns)                {                    </span><span style="color: #008000;">// Scaffolding ataması yapılmışsa koleksiyona eklenmesi                    // uygun değildir. Eğer bu kontrol yapılmazsa ilgili                    // alan görüntülenecektir. Çünkü tüm sorumluluğu almış                    // bulunuyoruz</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (                            !mColumn.Scaffold                        )                        </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;                     </span><span style="color: #008000;">// List ve ListDetails şablonları için IsHidden                    // genişletilmiş methodu ve IsLongString methodunu                    // kontrol ediyoruz ancak Details şablonu için                    // IsLongString methodunu kontrol edip gizlersek                    // uzun metin alanlar görüntülenmeyecek yani ufak bir                    // bug oluşacaktır.</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">switch</span><span style="color: #000000;"> (</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType)                    {                        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> PageTemplateType.Details:                            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType))                                </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">; </span><span style="color: #008000;">// foreach</span><span style="color: #000000;">                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> PageTemplateType.List:                            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType) ||                                    mColumn.IsLongString)                                </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">; </span><span style="color: #008000;">// foreach</span><span style="color: #000000;">                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                        </span><span style="color: #0000ff;">case</span><span style="color: #000000;"> PageTemplateType.ListDetails:                            </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsHidden(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.pTemplateType) ||                                    mColumn.IsLongString)                                </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">; </span><span style="color: #008000;">// foreach</span><span style="color: #000000;">                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                        </span><span style="color: #0000ff;">default</span><span style="color: #000000;">:                            </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;                    }                     </span><span style="color: #008000;">// Varsayılan şablonların haricinde uzun metinlerin                    // görüntülenmesini engellemek amacıyla bu kontrol                    // yapılıyor</span><span style="color: #000000;">                    </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (mColumn.IsLongString)                        </span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;                     DynamicField dynField = </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> DynamicField();                    dynField.DataField = mColumn.Name;                     dynFieldList.Add(dynField);                }            }            </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> dynFieldList;        }        </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;">    }}</span></pre>
</div>
<p>Son adımında ise ilgili veri kontrolüne veri listeleme işlemini bizim üstleneceğimizi bildirmek gerekiyor. GridView nesnesi için <strong>ColumnGenerator</strong> DetailsView içinse <strong>RowGenerator</strong> parametresi kullanılıyor. Son haliyle <strong>List</strong>.aspx.cs ve <strong>Details</strong>.aspx.cs şablon kodları aşağıdaki gibi tanımlanmalıdır.</p>
<p><strong>List.aspx.cs kodları:</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.Extentions; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> List : System.Web.UI.Page{    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable table;    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Init(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)    {        DynamicDataManager1.RegisterControl(GridView1, </span><span style="color: #0000ff;">true</span><span style="color: #000000;"> </span><span style="color: #008000;">/*setSelectionFromUrl*/</span><span style="color: #000000;">);        table = GridDataSource.GetTable();        GridView1.<strong>ColumnsGenerator </strong>= </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> <strong>CustomFieldGenerator</strong>(table,<strong> Eposta.Core.Enums.PageTemplateType.List</strong>);    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Load(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)    {        Title = table.DisplayName;        InsertHyperLink.NavigateUrl = table.GetActionPath(PageAction.Insert);         </span><span style="color: #008000;">// Disable various options if the table is readonly</span><span style="color: #000000;">        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (table.IsReadOnly)        {            GridView1.Columns[</span><span style="color: #800080;">0</span><span style="color: #000000;">].Visible = </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;            InsertHyperLink.Visible = </span><span style="color: #0000ff;">false</span><span style="color: #000000;">;        }    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> OnFilterSelectedIndexChanged(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e)    {        GridView1.PageIndex = </span><span style="color: #800080;">0</span><span style="color: #000000;">;    }}</span></pre>
</div>
<p><strong><br />
Details.aspx.cs kodları:</strong></p>
<div class="codeBlock">
<pre style="background-color: white;"><span style="color: #0000ff;">using</span><span style="color: #000000;"> System;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Linq;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.DynamicData;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> System.Web.UI.WebControls;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomFieldGenerator;</span><span style="color: #0000ff;">using</span><span style="color: #000000;"> Eposta.Core.CustomAttributes; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> </span><span style="color: #0000ff;">partial</span><span style="color: #000000;"> </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Details : System.Web.UI.Page {    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> MetaTable table;    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Init(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) {        DynamicDataManager1.RegisterControl(DetailsView1);    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> Page_Load(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) {        table = DetailsDataSource.GetTable();        DetailsView1.<strong>RowsGenerator </strong>= </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> <strong>CustomFieldGenerator</strong>(table, <strong>Eposta.Core.Enums.PageTemplateType.Details</strong>);

        Title = table.DisplayName;

        ListHyperLink.NavigateUrl = table.ListActionPath;    }    </span><span style="color: #0000ff;">protected</span><span style="color: #000000;"> </span><span style="color: #0000ff;">void</span><span style="color: #000000;"> DetailsView1_ItemDeleted(</span><span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, DetailsViewDeletedEventArgs e) {        </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (e.Exception == </span><span style="color: #0000ff;">null</span><span style="color: #000000;"> || e.ExceptionHandled) {            Response.Redirect(table.ListActionPath);        }    }}

</span></pre>
</div>
<p>Çözüm itibari ile Grup tablosunda yapılan tanımlalarla listeleme sayfa şablonlarında bazı alanların gizlenmesini güncelleme ve detaylı görüntüleme sayfa şablonlarında ise kullanıcının verileri görüntülemesine ve düzenlemesine imkan tanımış olduk. Ekran görüntüleri aşağıdaki gibidir.</p>
<p><strong>Güncelleme ekranı:</strong></p>
<p><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002433_1.jpg" alt="" width="374" height="264" /></p>
<p><strong>Listeleme ekranı:</strong></p>
<p><img src="http://www.yazgelistir.com/Makaleler/Resimler/1000002433_2.jpg" alt="" width="493" height="271" /></p>
<p>Bir yazının daha sonuna geldik. Kullanıcı gereksinimleriyle alakalı makaleler devam edecektir. Bir sonraki makalede görüşmek üzere. Yaşasın <span class="style6"><strong>dinamizm</strong></span>!</p>
<p><strong>Ömer Faruk ZORLU<br />
</strong></p>
<td align="center"> </td>
<p></span></p>
<table id="Table21" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td class="menuLeftCaption" colspan="3"> </td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.systemdoktoru.com/2010/04/asp-net-dynamic-data-gelismis-scaffolding-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

