<?xml version="1.0" encoding="windows-1254"?>
<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>Arda Çetinkaya &#187; Ajax</title>
	<atom:link href="http://www.minepla.net/tag/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.minepla.net</link>
	<description>Yazılım ve geri kalan her şey ile ilgili arada saçmaladıklarım...</description>
	<lastBuildDate>Fri, 09 Dec 2011 08:42:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Microsoft Asp.Net Ajax ve mouse event&#8217;leri&#8230;</title>
		<link>http://www.minepla.net/2009/11/microsoft-asp-net-ajax-ve-mouse-eventleri/</link>
		<comments>http://www.minepla.net/2009/11/microsoft-asp-net-ajax-ve-mouse-eventleri/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 15:32:32 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Miyop]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=672</guid>
		<description><![CDATA[Mouse event&#8217;lerini web uygulamasında yakalamak çeşitli javascript kütüphaneleri ile daha zevkli hale geldi. Bunlardan bir taneside Microsoft&#8217;un Asp.Net Ajax kütüphanesi. Oldukça basit ancak bir çok hamallık olarak nitelendirebileceğimiz işten kurtarıyor bizi&#8230;Aşağıda Asp.Net Ajax kütüphanesini kullanarak bir &#8220;div&#8221; i hareket ettirmeye başlıyoruz&#8230;Bundan sonraki yazım umarım sürükle bırak ile ilgili olacak.(Üşenmezsem&#8230;:)) Öncelikle http://www.asp.net/ajax/ adresinden Asp.Net Ajax&#8217;ın client [...]]]></description>
			<content:encoded><![CDATA[<p>Mouse event&#8217;lerini web uygulamasında yakalamak çeşitli javascript kütüphaneleri ile daha zevkli hale geldi. Bunlardan bir taneside Microsoft&#8217;un Asp.Net Ajax kütüphanesi. Oldukça basit ancak bir çok hamallık olarak nitelendirebileceğimiz işten kurtarıyor bizi&#8230;Aşağıda Asp.Net Ajax kütüphanesini kullanarak bir &#8220;div&#8221; i hareket ettirmeye başlıyoruz&#8230;Bundan sonraki yazım umarım sürükle bırak ile ilgili olacak.(Üşenmezsem&#8230;:))</p>
<p>Öncelikle <a href="http://www.asp.net/ajax/">http://www.asp.net/ajax/</a> adresinden Asp.Net Ajax&#8217;ın client *.js&#8217;lerini indirmeniz gerekmekte. İndirdiğiniz dosyalar arasından şimdilik MicrosoftAjax.js&#8217;i kullanıyor olacağız.Öncelikle bu basit örneğimiz için sayfamızın body kısmını oluşturuyoruz.Aşağıdaki kod parçacığını body tag&#8217;inin içine yazmamız yeterli olacaktır.</p>
<p><!--StartFragment--></p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><span style="color: #2b91af;"> 27</span> &lt;form id=<span style="color: #a31515;">&#8220;form1&#8243;</span> runat=<span style="color: #a31515;">&#8220;server&#8221;</span>&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 28</span> &lt;div id=<span style="color: #a31515;">&#8220;divMain&#8221;</span> style=<span style="color: #a31515;">&#8220;width: 100%; height: 100%; background-color: Gray;&#8221;</span>&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 29</span> &lt;div id=<span style="color: #a31515;">&#8220;divClickMe&#8221;</span> style=<span style="color: #a31515;">&#8220;width: 200px; height: 200px; background-color: Red&#8221;</span>&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 30</span> &lt;/div&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 31</span> X:&lt;asp:Label runat=<span style="color: #a31515;">&#8220;server&#8221;</span> ID=<span style="color: #a31515;">&#8220;lblXCor&#8221;</span> Text=<span style="color: #a31515;">&#8220;&#8221;</span>&gt;&lt;/asp:Label&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 32</span> Y:&lt;asp:Label runat=<span style="color: #a31515;">&#8220;server&#8221;</span> ID=<span style="color: #a31515;">&#8220;lblYCor&#8221;</span> Text=<span style="color: #a31515;">&#8220;&#8221;</span>&gt;&lt;/asp:Label&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 33</span> &lt;/div&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 34</span> &lt;/form&gt;</p>
</div>
<p>Bu kod ile aşağıdaki gibi bir görüntü elde edeceğiz.</p>
<p><img class="alignnone size-full wp-image-673" title="body" src="http://www.minepla.net/wp-content/uploads/body.JPG" alt="body" width="635" height="270" /></p>
<p>Şimdi amacımız, bu kırmızı kareyi(div) gri alan içinde hareket ettirmek olacak, ki bunu da Asp.net Ajax&#8217;ın sağladığı kolaylıklar ile yapacağız.</p>
<p>Bunun için aşağıdaki kod bloğunu sayfamızın head kısmına ekliyoruz.</p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><span style="color: #2b91af;"> 27</span> <span style="color: green;">//Asp.Net Ajax Client API&#8217;sini sayfamıza ekliyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 28</span> &lt;script src=<span style="color: #a31515;">&#8220;MicrosoftAjax.js&#8221;</span> type=<span style="color: #a31515;">&#8220;text/javascript&#8221;</span>&gt;&lt;/script&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 29</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 30</span> &lt;script&gt;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 31</span> <span style="color: green;">//PageLoad methodu,sayfamız yüklendiğinde istemci tarafında</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 32</span> <span style="color: green;">//otomatikman çalışacaktır.Aynı Asp.Net&#8217;in server tarafında olduğu gibi</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 33</span> function pageLoad(sender, args) {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 34</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 35</span> <span style="color: green;">//Sys.UI.DomEvent namespace&#8217;inde ki addHandler methodu ile, DOM objelerine</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 36</span> <span style="color: green;">//olay ataması yapabiliyoruz.Aşağıdaki kod bloğunda, divMain id&#8217;li div&#8217;lerde</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 37</span> <span style="color: green;">//fare ile ilgili bir olay olduğu zaman hangi metodların çağırılacağını belirtiyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 38</span> <span style="color: green;">//Fareye tıklandığı zaman ShowWhatHappened metodu,</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 39</span> <span style="color: green;">//Fare hareket ettiğinde de WhereIsTheMouse metodu çalışacaktır.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 40</span> Sys.UI.DomEvent.addHandler($get(<span style="color: #a31515;">&#8220;divMain&#8221;</span>), <span style="color: #a31515;">&#8220;mousedown&#8221;</span>, ShowWhatHappened);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 41</span> Sys.UI.DomEvent.addHandler($get(<span style="color: #a31515;">&#8220;divMain&#8221;</span>), <span style="color: #a31515;">&#8220;mousemove&#8221;</span>, WhereIsTheMouse);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 42</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 43</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 44</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 45</span> function ShowWhatHappened(e) {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 46</span> <span style="color: green;">//Sys.UI namespace&#8217;indeki MouseButton nesnesi ile, istemci tarafında </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 47</span> <span style="color: green;">//gerçekleşen olayın özelliklerini kontrol edebiliyoruz. Burada sol tuşa</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 48</span> <span style="color: green;">//tıklandığını anlıyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 49</span> <span style="color: blue;">if</span> (e.button == Sys.UI.MouseButton.leftButton) {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 50</span> <span style="color: green;">//Farenin hareketlerine göre divClickMe div&#8217;inin yerini değiştiriyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 51</span> $get(<span style="color: #a31515;">&#8220;divClickMe&#8221;</span>).style.position = <span style="color: #a31515;">&#8220;relative&#8221;</span>;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 52</span> $get(<span style="color: #a31515;">&#8220;divClickMe&#8221;</span>).style.top = e.offsetY;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 53</span> $get(<span style="color: #a31515;">&#8220;divClickMe&#8221;</span>).style.left = e.offsetX;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 54</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 55</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 56</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 57</span> function WhereIsTheMouse(e) {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 58</span> <span style="color: green;">//Farenin kordinatlarını ekrana yazdırıyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 59</span> $get(<span style="color: #a31515;">&#8220;lblXCor&#8221;</span>).innerHTML = e.offsetX;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 60</span> $get(<span style="color: #a31515;">&#8220;lblYCor&#8221;</span>).innerHTML = e.offsetY;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 61</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 62</span> &lt;/script&gt;</p>
</div>
<p>Bütün bunlardan sonra, gri alan içerisinde faremizi tıkladığımız yere kırmızı kare hareket edecektir.Bazı işlemler bu tarz javascript kütüphaneleri ile oldukça kolay hale geliyor&#8230;Ne güzel değil mi&#8230;:D</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;script src=&#8221;MicrosoftAjax.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;script&gt;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">function pageLoad(sender, args) {</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sys.UI.DomEvent.addHandler($get(&#8220;divMain&#8221;), &#8220;mousedown&#8221;, ShowWhatHappened);</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sys.UI.DomEvent.addHandler($get(&#8220;divMain&#8221;), &#8220;mousemove&#8221;, WhereIsTheMouse);</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">function ShowWhatHappened(e) {</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">if (e.button == Sys.UI.MouseButton.leftButton) {</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$get(&#8220;divClickMe&#8221;).style.position = &#8220;relative&#8221;;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$get(&#8220;divClickMe&#8221;).style.top = e.offsetY;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$get(&#8220;divClickMe&#8221;).style.left = e.offsetX;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">function WhereIsTheMouse(e) {</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$get(&#8220;lblXCor&#8221;).innerHTML = e.offsetX;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$get(&#8220;lblYCor&#8221;).innerHTML = e.offsetY;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 619px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&lt;/script&gt;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2009/11/microsoft-asp-net-ajax-ve-mouse-eventleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PageMethods vs. UpdatePanel</title>
		<link>http://www.minepla.net/2009/01/pagemethods-vs-updatepanel/</link>
		<comments>http://www.minepla.net/2009/01/pagemethods-vs-updatepanel/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 13:13:11 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Miyop]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=237</guid>
		<description><![CDATA[Asp.Net Ajax ile, Ajax teknolojisinden oldukça kolay bir şekilde yararlanabiliyoruz. Bazı şeyleri o kadar kolaylaştırıyor ki, nasıl çalıştığını fazla sorgulamadan kullanıyoruz. Peki doğru mu kullanıyoruz? Bazı şeyleri ajax ile halledip, sayfalarımızın fonksiyonlarını genişletsekte aslında bir çok yanlış yapabiliyoruz. Bunlardan en büyüğü Asp.net Ajax ile beraber karşımıza çıkan UpdatePanel’i kullanma şeklimiz.. Update Panel kontrolü, Asp.net’de ajax [...]]]></description>
			<content:encoded><![CDATA[<p>Asp.Net Ajax ile, Ajax teknolojisinden oldukça kolay bir şekilde yararlanabiliyoruz. Bazı şeyleri o kadar kolaylaştırıyor ki, nasıl çalıştığını fazla sorgulamadan kullanıyoruz. Peki doğru mu kullanıyoruz?<br />
Bazı şeyleri ajax ile halledip, sayfalarımızın fonksiyonlarını genişletsekte aslında bir çok yanlış yapabiliyoruz. Bunlardan en büyüğü Asp.net Ajax ile beraber karşımıza çıkan UpdatePanel’i kullanma şeklimiz.. Update Panel kontrolü, Asp.net’de ajax destekli bir uygulama yapmak istediğimizde sanırım en çok kullanacağımız kontrol. Temel olarak yaptığı şey Partial Rendering. Yani sayfanın belli bir kısmını, server tarafından gelen bilgi ile yeniden Render etmek.</p>
<blockquote><p>&lt;asp:ScriptManager ID=&#8221;ScriptManager1&#8243; runat=&#8221;server&#8221;&gt;<br />
    &lt;/asp:ScriptManager&gt;<br />
   <br />
   <strong> &lt;asp:UpdatePanel ID=&#8221;UpdatePanel1&#8243; runat=&#8221;server&#8221;&gt;<br />
    &lt;ContentTemplate&gt;</strong><br />
   <br />
        &lt;asp:Label ID=&#8221;Label1&#8243; runat=&#8221;server&#8221; Text=&#8221;Label&#8221;&gt;&lt;/asp:Label&gt;<br />
        &lt;asp:Button ID=&#8221;Button1&#8243; runat=&#8221;server&#8221; onclick=&#8221;Button1_Click&#8221; Text=&#8221;Button&#8221; /&gt;<br />
   <br />
    <strong>&lt;/ContentTemplate&gt;<br />
    &lt;/asp:UpdatePanel&gt;</strong></p>
<p>Codebehind’da ise Button1_Click methodunuz vardır.<br />
protected void Button1_Click(object sender, EventArgs e)<br />
{<br />
            Label1.Text = &#8220;arda&#8221;;<br />
}</p></blockquote>
<p> Yukarıdaki kod örneğinde de, UpdatePanel’in içine koyduğumuz Button’a tıkladığımız zaman server tarafındaki methodumuz çalışacak ve sayfa postback olmadan iligli Label değişecektir. Buraya kadar herşey iyi hoş. Peki server’a ne gidiyor ne geliyor? Bu kadar basit bir işlem için sadece “arda” yazısının server tarafından gelmesini umuyoruz.Ya da öyle sanıyoruz. Ama Web Development Helper gibi programlar ile giden sorguları ve gelen sonuçları gözlemlediğimiz zaman gelen bilgi oldukça farklı.Komple HTML yapısında, kontrolümüzün client tarafında render edilmesi gereken hali,server tarafında render edilmiş olarak geliyor.</p>
<blockquote><p>
219|updatePanel|UpdatePanel1|</p>
<p>        &lt;span id=&#8221;Label1&#8243;&gt;arda&lt;/span&gt;<br />
        &lt;input type=&#8221;submit&#8221; name=&#8221;Button1&#8243; value=&#8221;Button&#8221; id=&#8221;Button1&#8243; /&gt;|220|hiddenField|__VIEWSTATE|/wEPDwUJLTMyMjU1MTk5D2QWA</p>
<p>gIDD2QWAgIDD2QWAmYPZBYCAgEPDxYCHgRUZXh0BVphcmRhCmFyZGEKYXJkYQphc</p>
<p>mRhCmFyZGEKYXJkYQphcmRhCmFyZGEKYXJkYQphcmRhCmFyZGEKYXJkYQphcmRhC</p>
<p>mFyZGEKYXJkYQphcmRhCmFyZGEKYXJkYQpkZGRJeTB5jsLrxLhDSFm1xhBPamTKRA==</p>
<p>|48|hiddenField|__EVENTVALIDATION|/wEWAgKbzLDvAgKM54rGBm6DEpmB2Hi6tmqot</p>
<p>9F2a91GT/Sp|0|asyncPostBackControlIDs|||0|postBackControlIDs|||13|updatePanelID</p>
<p>s||tUpdatePanel1|0|childUpdatePanelIDs|||12|panelsToRefreshIDs||UpdatePanel1|2|</p>
<p>asyncPostBackTimeout||90|13|formAction||WebForm1.aspx|</p></blockquote>
<p>Bu basit işlem için gönderdiğimiz request&#8217;in sonucu yukarıdaki gibi. Böyle bir işlem için oldukça büyük bir veri. Daha büyük ve geniş içerikli operasyonlarda bu çok daha büyük bir veriye dönüşecektir. Bandwidth gibi kısıtlamaları olan sistemlerde bence çok büyük bir sorun. Bunun dışında da performans açısından zaten genel olarak büyük bir sorun. Bu sorunu UpdatePanel’i kullanmadan yapabiliriz.PageMethods kavramı bu noktada ortaya çıkıyor. Ki bence Asp.Net Ajax’ın en güzel özelliği.PageMethods sayesinde, client tarafından, server methodlarını çağırabiliyor olmamız. Asp.Net Ajax ile çağırdığımız eğer PageMethods’un sonucu bize JSON olarak dönüyor.Bundan dolayı dönen veri oldukça basit ve sade oluyor.</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
    function Click() {<br />
        PageMethods.<span style="color: #ff0000;"><span style="text-decoration: underline;">SomeMethod</span></span>(OnSucceeded, OnFailed);<br />
    }</p>
<p>    function OnSucceeded(result, userContext, methodName) {<br />
        $get(&#8216;Label1&#8242;).innerHTML = result;<br />
    }</p>
<p>    function OnFailed(error, userContext, methodName) {<br />
        $get(&#8216;Label1&#8242;).innerHTML = &#8220;Hata oluştu.&#8221;;<br />
    }<br />
&lt;/script&gt;<br />
&#8230;&#8230;&#8230;&#8230;&#8230;.<br />
&#8230;&#8230;&#8230;.<br />
&#8230;..<br />
&#8230;&#8230;<br />
..</p>
<p>&lt;asp:ScriptManager ID=&#8221;ScriptManager1&#8243; runat=&#8221;server&#8221;    <span style="color: #ff0000;"><strong>EnablePageMethods=&#8221;true&#8221;</strong></span>&gt;&lt;/asp:ScriptManager&gt;<br />
   <br />
   <br />
        &lt;asp:Label ID=&#8221;Label1&#8243; runat=&#8221;server&#8221; Text=&#8221;Label&#8221;&gt;&lt;/asp:Label&gt;<br />
        &lt;asp:Button ID=&#8221;Button1&#8243; runat=&#8221;server&#8221; <span style="color: #ff0000;">OnClientClick=&#8221;Click();return false;&#8221;</span> Text=&#8221;Button&#8221; /&gt;<br />
  <br />
 <br />
Codebehind’da ise;</p>
<p><strong><span style="color: #ff0000;">[WebMethod]<br />
</span>public <span style="color: #ff0000;">static string </span>SomeMethod()<br />
{<br />
    return &#8220;arda&#8221;;<br />
}</strong></p></blockquote>
<p>Burada önemli olan noktalar, codebehind’dan çağıracağımız methodun WebMethod attribute ile tanımlanmış olması,static bir method olması ve tabi ki string dönüyor olması. MarkUp tarafında ise ScriptManager’da EnablePageMethods’un true olması gerekmekte. Aksi takdirde methodları çağıramazsınız.  Client tarafından çağıralan SomeMethod()’un dönüş değeri JSON formatında olacaktır.Yukarıdaki kod bloğundan javascript ile nasıl çağırıldığına dikkat etmek gerekiyor. PageMethods.SomeMethod(); şeklinde çağıralan methoda parametre olarak 2 tane fonksiyon gönderiyoruz ve bunları tanımlıyoruz. Bunlardan biri bu SomeMethod() methodunun başarılı bir şekilde çalışmasının sonucu çalışacak method(OnSucceeded) diğeri ise tam tersi durumunda hata oluştuğunda çalışacak method(OnFailed).Server tarafında çalışan SomeMethod() sorunsuz olarak çalışırsa client tarafında yapılacak olan değişiklikleri OnSucceeded methodunda yaparız. Burada altını çizmek istediğim nokta server tarafından bu request sonucu dönen değer.</p>
<blockquote><p>{&#8220;d&#8221;:&#8221;arda&#8221;}</p></blockquote>
<p>Bu değer sadece yukarıdaki gibi JSON formatında olacaktır, ve boyut olarakta diğer yönteme göre kıyaslandığında çok daha küçük olacaktır.İhtiyaca göre bu tarz şeyleri göz önüne alarak geliştirme yapmak uygulamalarımız için daha sağlıklı olacaktır.Şimdilik bu kadar,ilerleyen yazılarda çoooook daha ilginç ayrıntılara değiniyor olacağım.Çok gaza geldim sormayın <img src='http://www.minepla.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2009/01/pagemethods-vs-updatepanel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hangi kontrol PostBack oluyor?</title>
		<link>http://www.minepla.net/2008/08/hangi-kontrol-postback-oluyor/</link>
		<comments>http://www.minepla.net/2008/08/hangi-kontrol-postback-oluyor/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 06:56:27 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Miyop]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=145</guid>
		<description><![CDATA[Asp.net&#8217;de bazen hangi kontrolün PostBack olduğunu anlamamız gerekebilir.Hangi kontrol PostBack işlemini tetikliyor bilgisi, bir sonraki işler için oldukça gerekebiliyor,özellikle Partial Rendering tarzı Ajax uygulamalarında işimize yarayabilir.Aşağıdaki kod parçacağı ile bu işlemi yapabilirsiniz&#8230; ScriptManager sm = ScriptManager.GetCurrent(this); string controlId = sm.AsyncPostBackSourceElementID; Control cntrl = this.FindControl(controlId);  ]]></description>
			<content:encoded><![CDATA[<p>Asp.net&#8217;de bazen hangi kontrolün PostBack olduğunu anlamamız gerekebilir.Hangi kontrol PostBack işlemini tetikliyor bilgisi, bir sonraki işler için oldukça gerekebiliyor,özellikle Partial Rendering tarzı Ajax uygulamalarında işimize yarayabilir.Aşağıdaki kod parçacağı ile bu işlemi yapabilirsiniz&#8230;</p>
<p>ScriptManager sm = ScriptManager.GetCurrent(this);<br />
string controlId = sm.AsyncPostBackSourceElementID;<br />
Control cntrl = this.FindControl(controlId);</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2008/08/hangi-kontrol-postback-oluyor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax Control Toolkit v3.0.20229</title>
		<link>http://www.minepla.net/2008/03/ajax-control-toolkit-v3020229/</link>
		<comments>http://www.minepla.net/2008/03/ajax-control-toolkit-v3020229/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 08:20:27 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Miyop]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=129</guid>
		<description><![CDATA[.NET Framework 3.5 ve Visual Studio 2008&#8242;e tamamen uyumlu olarak ACT&#8217;in yeni versiyonu çıktı. http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=11121 adresinden indirebilirsiniz.]]></description>
			<content:encoded><![CDATA[<p>.NET Framework 3.5 ve Visual Studio 2008&#8242;e tamamen uyumlu olarak ACT&#8217;in yeni versiyonu çıktı.<br />
<a href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=11121">http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=11121</a> adresinden indirebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2008/03/ajax-control-toolkit-v3020229/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Ajax’da UpdatePanel ve Trigger</title>
		<link>http://www.minepla.net/2007/09/aspnet-ajaxda-updatepanel-ve-trigger/</link>
		<comments>http://www.minepla.net/2007/09/aspnet-ajaxda-updatepanel-ve-trigger/#comments</comments>
		<pubDate>Sun, 09 Sep 2007 14:52:10 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Miyop]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=85</guid>
		<description><![CDATA[Ajax Extensions 1.0 ile gelen ve sanırım en çok kullanılan kontrol olan UpdatePanel’den biraz bahsetmek istiyorum. Kendi yaptığım uygulamalarda oldukça sık kullanıyor olmam böyle bir yazı yazmam için beni tetikledi. Tetikledi derken, trigger mantığından da biraz bahsedeceğimi söylemek isterim. Bu yazıda basit bir UpdatePanel örneği ve bu UpdatePanel’i dışarıdan başka bir kontrol ile nasıl tetikleriz [...]]]></description>
			<content:encoded><![CDATA[<p>Ajax Extensions 1.0 ile gelen ve sanırım en çok kullanılan kontrol olan UpdatePanel’den biraz bahsetmek istiyorum. Kendi yaptığım uygulamalarda oldukça sık kullanıyor olmam böyle bir yazı yazmam için beni tetikledi. Tetikledi derken, trigger mantığından da biraz bahsedeceğimi söylemek isterim. Bu yazıda basit bir UpdatePanel örneği ve bu UpdatePanel’i dışarıdan başka bir kontrol ile nasıl tetikleriz bundan bahsedeceğim. Umarım bir şekilde işinize yarayan bir şeyler olmuşmasını sağlar. Yapacağımız şey oldukça basit bir örnek olacak; RadioButtonList’den seçtiğimiz elemanlara göre UpdatePanel içindeki ASP.NET kontrolünü güncelleme.<br />
<span id="more-85"></span></p>
<p>Öncelikle Visual Studio ile bir ajax enabled web projesi açalım. Dikkat ederseniz açılan sayfanın kaynak kodlarına baktığınız zaman aşağıdaki gibi bir kod bloğu göreceksiniz.</p>
<p><code><br />
</code></p>
<p>Bu sayfamızda ajax kontrollerini çalıştırabilmemiz için gerekli ASP.NET kontrollerinden olmazsa olmazı. Mutlaka bu kod bloğu ajax olacak sayfalarda bulunmalı. Ajax Extensions ile birlikte gelen kontroller(UpdatePanel,UpdateProgress&#8230;) bu ScriptManager olmazsa çalışmıyor. Aşağıdaki gibi bir yapı oluşturacak şekilde toolkit’den gerekli kontrolleri sayfaya ekliyoruz.</p>
<p><img id="image84" src="http://www.minepla.net/wp-content/uploads/arayuz.thumbnail.JPG" alt="arayuz.JPG" height="96" /></p>
<p>İlk olarak UpdatePanel,içine Text property’si “Deneme” olan bir label, daha sonra altına da bir tane RadioButtonList kontrolü ekliyoruz. UpdatePanel kontrolü ne yapıyor peki? Bütün bir sayfa post back olmadan ya da refresh olmadan belli bir bölgedeki içeriği değiştirmek için ve “Partial-page rendering” olarak adlandıralan işlemler için tasarlanmış bir ASP.NET kontrolü. Belli bir bölge olarak bahsettiğim yer UpdatePanel’in yer aldığı kısım oluyor. UpdatePanel’in içine koyacağınız her hangi bir kontrolü sayfa post-back olmadan güncelleyebilirsiniz. Sanırım bu basit açıklama UpdatePanel için birazda olsa yeterli olmuştur.UpdatePanel’i ve içine az önce bahsettiğim Label’ı eklediğiniz zaman kaynak kod tarafında şu şekilde bir kod bloğu oluşacaktır.</p>
<div><code></p>
<p></code></div>
<p><code> </p>
<p></code></p>
<p>Şimdi burda önemli olan kısım ContentTemplate olan yer. ContentTemplate tag’ı içerisindeki olan kodlar yani kontroller UpdatePanel tarafından işleme alınacak kısımdır. Yani bir işlem yaptığınız zaman post-back olmadan değişmesini istediğiniz kontrolleri ContentTemplate içeriğine yazıyorsunuz.</p>
<p>Şimdi bu UpdatePanel’i tetikleyecek diğer kontrolümüzü oluşturalım.Yukarıda bahsetmiş olduğum RadioButtonList bu kontrolümüz olsun. Burda dikkat etmeniz gereken şey RadioButtonList kontrolünü UpdatePanel kontrolünün dışına yani tagından sonra herhangi bir yere yazmamız.RadioButtonList’e 3 tane item ekliyoruz.Ve AutoPostBack özelliğinin true olmasına dikkat ediyoruz. Eğer true yapmazsak, ajax olayı sayfada istediğimiz gibi çalışmayacaktır. Ve ayrıca RadioButtonList kontrolündeki item’lara tıklandığı zaman olmasını istediğimiz event’i yazıyoruz, yani OnSelectedIndexChanged.</p>
<p><code>OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"&gt;<br />
Büyük<br />
Orta<br />
Küçük<br />
</code></p>
<p>Ayrıca kod tarafında aşağıdaki şekilde SelectedIndexChanged olduğu zaman ne olmasını istiyorsak onu yazıyoruz.</p>
<div><code>protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)<br />
{<br />
if (RadioButtonList1.SelectedValue == "Big")<br />
{<br />
Label1.Text = "Büyük";<br />
}<br />
else if (RadioButtonList1.SelectedValue == "Mid")<br />
{<br />
Label1.Text = "Orta";<br />
}<br />
else if (RadioButtonList1.SelectedValue == "Small")<br />
{<br />
Label1.Text = "Küçük";</code></div>
<p><code>}<br />
}<br />
Oldukça basit bir şekilde, tıkladığımız item’a göre UpdatePanel içindeki Label’ı güncelliyoruz.Buraya kadar umarım herşey anlaşılır gidiyordur. Şimdi yaratmış olduğumuz RadioButtonList kontrolü ile UpdatePanel’i ilişkilendireceğiz.Yani RadioButtonList’de seçili olan item UpdatePanel’de post-pack olmadan güncellenecek. Bunun için tekrar UpdatePanel kontrolüne dönüyoruz, ve ContentTemaplate tagından sonra Triggers tagını açıyoruz. Zaten Visual Studio size bu konuda yardımcı olacaktır.</p>
<div><code></p>
<p></code><br />
<code><br />
</code><br />
Burda dikkat ederseniz bir tane asenkron post-back tetiği yarattık. (PostBackTrigger diye bir eleman daha olduğunu göreceksiniz, bu normal post-back eventleri ile tetiklenmesini sağlar)Yani basitçe bütün sayfa komple post-back olmadan belli bir kontrol ile updatePanel’i tetikleyeceğiz. Bunun için ControlID özelliğine hangi kontrol ile tetiklemek istiyorsak onun ID’sini yazıyoruz. Burada RadioButtonList1 id’li kontrolümüz oluyor. Ayrıca bu kontrolün hangi event’i ile bu UpdatePanel’in tetikleneceğini de EventName özelliği ile belirtiyoruz. Bunada SelectedIndexChanged yazıyoruz.<br />
Ve sayfamızı çalıştırıyoruz.RadioButtonList’de seçeneklerden birine tıkladığımız zaman sayfa postback olmadan label kontrolünün değiştiğini göreceksiniz.</p>
<p>Oldukça basit bir Ajax uygulaması yapmış olduk. Tabi ki bunu geliştirmek(data uygulamları, UI özellikleri gibi) sizin hayal gücünüze kalmış bir şey. Umarım bazı şeyler için yardımcı olmuştur. Her türlü sorunuz için iletişim kısmından benimle iletişime geçebilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2007/09/aspnet-ajaxda-updatepanel-ve-trigger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

