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

<channel>
	<title>asp.net, jquery ve diğer web teknolojileri üzerine &#187; drag drop</title>
	<atom:link href="http://www.apostylee.com/tag/drag-drop/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.apostylee.com</link>
	<description>asp.net, jquery ve diğer web teknolojileri üzerine, biraz da kişisel.</description>
	<lastBuildDate>Mon, 10 Oct 2011 11:49:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>jQuery UI sürükle bırak ile alış veriş sepeti mantığı</title>
		<link>http://www.apostylee.com/jquery-ui-drag-drop-ile-alis-veris-sepeti-mantigi/</link>
		<comments>http://www.apostylee.com/jquery-ui-drag-drop-ile-alis-veris-sepeti-mantigi/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 07:01:36 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[basket]]></category>
		<category><![CDATA[drag drop]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jqueryui]]></category>
		<category><![CDATA[sepet]]></category>

		<guid isPermaLink="false">http://www.apostylee.com/?p=1775</guid>
		<description><![CDATA[Uzun zaman önce hayalini çok kurduğumuz fakat yeterince javascript bilmemekten ve kütüphanelerin bu denli gelişmiş olamayışından dolayı bir türlü gerçekleştiremediğimiz bir olaydı bu. Nereden aklıma geldi bilmiyorum, fakir bir çocuğun zengin olduğunda hayalini kurup bir türlü yapamadığı şeyi yapması heyecanıyla sarıldım web matrixe :) Heeeeeman, güç bende artık ! Senaryomuz şu şekilde, bir tarafta ürünlerimiz [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Uzun zaman önce hayalini çok kurduğumuz fakat yeterince javascript bilmemekten ve kütüphanelerin bu denli gelişmiş olamayışından dolayı bir türlü gerçekleştiremediğimiz bir olaydı bu. Nereden aklıma geldi bilmiyorum, fakir bir çocuğun zengin olduğunda hayalini kurup bir türlü yapamadığı şeyi yapması heyecanıyla sarıldım web matrixe :) Heeeeeman, güç bende artık !<br />
<a href="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja.jpg"><img class="size-medium wp-image-1550 aligncenter" title="jquery-jqueryui-ninja" src="http://www.apostylee.com/wp-content/uploads/2011/05/jquery-jqueryui-ninja-300x254.jpg" alt="" width="300" height="254" /></a><br />
<span id="more-1775"></span><br />
Senaryomuz şu şekilde, bir tarafta ürünlerimiz var diğer tarafta ise alış veriş sepetimiz. Kullanıcı almak istediği ürünü sürükleyip sepete bırakıyor. Aynı ürünü tekrar sepete attığında sadece adet bir artıyor. Ürünü sepetinden çıkartmak istediğinde ise, üzerine çift tıklıyor. Bu işi yapmak için <a href="http://www.jquery.com/" target="_blank">jQuery</a> ve <a href="http://www.jqueryui.com/" target="_blank">jQueryUI</a> kullanıyoruz. En can alıcı noktamız ise jQuery UI nin <strong><a href="http://jqueryui.com/demos/draggable/" target="_blank">Draggable</a></strong> ve <strong><a href="http://jqueryui.com/demos/droppable/" target="_blank">Droppable</a></strong> özelliği. Kodların üzerinde açıklamalar bulunuyor.</p>
<pre class="brush: jscript; title: ; notranslate">
        $(document).ready(function(){

            // Sürükleme yapılacak elemanları seçiyoruz.
            $(&quot;.urunGrid ul li&quot;).draggable({
                revert:true,
                helper: &quot;clone&quot;
            });

            // Üzerine elemanları alacak olan kısmı belirtiyoruz. Yani sepetimiz.
            $(&quot;.sepet&quot;).droppable({
                drop: function( event, ui ) {
                    var t = $(this);
                    var d = ui.draggable; // bu bizim tuttuğumuz eleman yani &lt;li&gt; elementi
                    var ul = t.find(&quot;ul&quot;); // Sepetimizin içindeki ul elementimiz.
                    var id = d.attr(&quot;id&quot;); // tuttuğumuz ürünün id si.
                    var idToLi = ul.find(&quot;#&quot;+id); // sepette, tuttuğumuz id ye sahip ürünü seçiyoruz.
                    var adet;

                   // Veritabanına yazma işlerini burada yapabilirsiniz. (ajax)                    

                    idToLi.fadeOut().fadeIn(); // şeklimizi yapıyoruz :)

                    // eğer daha önce ürün ekli değilse ekliyoruz, ekliyse adetini 1 arttırıyoruz.
                    if(idToLi.html()==null){
                        ul.append(&quot;&lt;li id=\&quot;&quot;+id+&quot;\&quot; title=\&quot;Silmek için çift tıklayın\&quot;&gt;&lt;em&gt;1 *&lt;/em&gt; &quot;+d.html()+&quot;&lt;/li&gt;&quot;);
                    }
                    else{
                        adet = parseInt(idToLi.find(&quot;em&quot;).text().replace(&quot; *&quot;,&quot;&quot;));
                        idToLi.find(&quot;em&quot;).text(adet+1+&quot; *&quot;);
                    }
                    toplam(); // sepetin altına toplam alan fonksiyonu çağırıyoruz.
                }
            });

            // Sepetteki ürüne çift tıklandığında silinmesini sağlıyoruz.
            $(&quot;.sepet ul li&quot;).live(&quot;dblclick&quot;, function() {
                var adet = parseInt($(this).find(&quot;em&quot;).text().replace(&quot; *&quot;, &quot;&quot;));
                if (adet == 1) {
                    $(this).remove();
                }
                else {
                    $(this).find(&quot;em&quot;).text(adet-1+&quot; *&quot;);
                }
                toplam(); // Ürün silindiğinde toplamın yeniden hesaplanmasını sağlıyoruz.
            });
        });

        function toplam(){
            var toplam=0;
            var t;
            var fiyat;
            var adet;

            // Eğer sepette ürün yoksa &quot;ürün yok&quot; ibaresini görünmez yapıyoruz.
            if($(&quot;.sepet ul li&quot;).length != 0){
                $(&quot;.sepet h1 small&quot;).fadeOut();
            }
            else
            {
                $(&quot;.sepet h1 small&quot;).fadeIn();
            }

            // Sepetin içinde ki ürünleri yani &lt;li&gt; leri döndürüp toplama işlemini yapıyoruz.
            $(&quot;.sepet ul li&quot;).each(function(){
                t = $(this);
                fiyat = parseFloat(t.find(&quot;span&quot;).text().replace(t.find(&quot;span small&quot;).text(),&quot;&quot;));
                adet = t.find(&quot;em&quot;).text().replace(&quot; *&quot;,&quot;&quot;);
                toplam += (fiyat*adet);
            });

            // toplamı ilgili alana yazdırıyoruz.
            $(&quot;#toplam&quot;).fadeIn().text($(&quot;.sepet ul li&quot;).length+&quot; Ürün, Toplam: &quot;+toplam+&quot; TL&quot;);
        }
</pre>
<pre class="brush: xml; title: ; notranslate">
    &lt;body&gt;
        &lt;div class=&quot;tasiyici&quot;&gt;
            &lt;div class=&quot;kutu urunGrid&quot;&gt;
                &lt;h1&gt;Ürünler&lt;/h1&gt;
                &lt;ul&gt;
                    &lt;li id=&quot;1&quot;&gt;Asus Anakart &lt;span&gt;125&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                    &lt;li id=&quot;2&quot;&gt;Intel İşlemci &lt;span&gt;23&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                    &lt;li id=&quot;3&quot;&gt;Amd İşlemci &lt;span&gt;44&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                    &lt;li id=&quot;4&quot;&gt;Sony Bilmemne &lt;span&gt;96&lt;small&gt; TL&lt;/small&gt;&lt;/span&gt;&lt;/li&gt;
                &lt;/ul&gt;
            &lt;/div&gt;

            &lt;div class=&quot;kutu sepet&quot;&gt;
                &lt;h1&gt;Sepet &lt;small&gt;ürün yok&lt;/small&gt;&lt;/h1&gt;
                &lt;ul&gt;&lt;/ul&gt;
                &lt;div id=&quot;toplam&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;

            &lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
    &lt;/body&gt;
</pre>
<p>Sürükle bırak gibi dışarıdan karışık gelen bir olayı jQuery sayesinde çok basit bir şekilde çözdük. Bu konuyla ilgili ufak tefek denemeler yaparak olayı daha iyi kavraya bilirsiniz. Aşağıda çalışan örneği görebilirsiniz, umarım faydalı bir yazı olmuştur :)</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/apoStyLEE/3bgz6/embedded/result,js,html,css"></iframe></p>
<div class="shr-publisher-1775"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-ui-drag-drop-ile-alis-veris-sepeti-mantigi/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>jQuery ile sürükle bırak yaparak sıralama işlemi</title>
		<link>http://www.apostylee.com/jquery-ile-surukle-birak-yaparak-siralama-islemi/</link>
		<comments>http://www.apostylee.com/jquery-ile-surukle-birak-yaparak-siralama-islemi/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 14:27:00 +0000</pubDate>
		<dc:creator>apoStyLEE</dc:creator>
				<category><![CDATA[Asp.Net]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[drag drop]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[sıralama]]></category>
		<category><![CDATA[sürükle bırak]]></category>

		<guid isPermaLink="false">http://jquery-ile-surukle-birak-yaparak-siralama-islemi.html</guid>
		<description><![CDATA[Sıralamadan kastım, kategori sıralama olabilir, eklenti sıralama olabilir, yazı sıralama olabilir vb.. Normalde sıralama işlemlerini yapabilmek için epeyce kod yazmaktan ziyade kullanıcının nasıl en rahat şekilde kullanabileceğinin hesabını kitabını sıklıkla yapıyoruz. Sağolsun  jQuery&#8216; nin Ui (kullanıcı arayüzü (user interface)) imdadımıza yetişiyor. Önce  sıralama (sortable) fonksiyonunu kullanıyoruz, daha sonra veriyi serileştiriyoruz (serialize) sonrada ajax ile postalıyoruz.Hemen kodlarımıza bakalım. Öncelikle bu iki dosyayı  Jquery [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Sıralamadan kastım, kategori sıralama olabilir, eklenti sıralama olabilir, yazı sıralama olabilir vb.. Normalde sıralama işlemlerini yapabilmek için epeyce kod yazmaktan ziyade kullanıcının nasıl en rahat şekilde kullanabileceğinin hesabını kitabını sıklıkla yapıyoruz. Sağolsun  <strong><a href="http://www.jquery.com" target="_blank">jQuery</a></strong>&#8216; nin <strong><a href="http://jqueryui.com" target="_blank">Ui</a> </strong>(kullanıcı arayüzü (user interface)) imdadımıza yetişiyor. Önce  <strong><a href="http://jqueryui.com/demos/sortable/" target="_blank">sıralama</a></strong> (sortable) fonksiyonunu kullanıyoruz, daha sonra veriyi serileştiriyoruz (serialize) sonrada <strong><a href="http://docs.jquery.com/Ajax/jQuery.post#urldatacallbacktype" target="_blank">ajax ile postalıyoruz</a></strong>.Hemen kodlarımıza bakalım. Öncelikle bu iki dosyayı  <strong><a href="http://aspx.apostylee.com/suruklebirak/jquery-1.3.2.min.js">Jquery</a> </strong><strong><a href="http://aspx.apostylee.com/suruklebirak/jquery-ui-1.7.1.custom.min.js">Ui</a></strong> indirelim ve sayfamıza ekleyelim.Veritabanımızdaki kategoriler tablomuz.</p>
<pre class="brush: sql; title: ; notranslate">
	CREATE TABLE [kategoriler] (
	  [id] int IDENTITY(1, 1) NOT NULL,
	  [kategoriadi] nvarchar(50) NULL,
	  [sira] int NULL,
	  PRIMARY KEY CLUSTERED ([id])
	)
	ON [PRIMARY]
	GO
</pre>
<p> </p>
<p>sirala.aspx sayfamızın içeriği</p>
<pre class="brush: xml; title: ; notranslate">
	&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;
	&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-ui-1.7.1.custom.min.js&quot;&gt;&lt;/script&gt;
</pre>
<pre class="brush: xml; title: ; notranslate">
	body {
		font-family: Arial, Helvetica, sans-serif;
		font-size: 16px;
		margin-top: 10px;
	}
	#icerik ul{
	    margin:0;width:300px
	}
	#icerik ul li {
		list-style: none;
		margin: 0 0 4px 0;
		padding: 5px;
		background-color:#007dd5;
		color:#fff;
	}
	#icerik li:hover{
	    cursor:move;
	}
	.yeniyer{border:2px dotted #860101}
</pre>
<pre class="brush: jscript; title: ; notranslate">
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function(){
    $(function() {
	    $(&quot;#icerik ul&quot;).sortable({
	        placeholder: 'yeniyer',
	        opacity: 0.6,
	        cursor: 'move',
	        update: function() {
		    var order = $(this).sortable(&quot;serialize&quot;);
		    $.post(&quot;kaydet.aspx&quot;, order);
	    }
	    });
    });
});
&lt;/script&gt;
</pre>
<pre class="brush: xml; title: ; notranslate">
	&lt;div id=&quot;icerik&quot;&gt;
        &lt;ul&gt;
	         &lt;asp:Literal runat=&quot;server&quot; ID=&quot;liste&quot;&gt;&lt;/asp:Literal&gt;
        &lt;/ul&gt;
    &lt;/div&gt;
</pre>
<p>Sirala.aspx.cs sayfamızın içeriği</p>
<pre class="brush: csharp; title: ; notranslate">
 protected void Page_Load(object sender, EventArgs e)
 {
 if(!IsPostBack)
 {
 listeDoldur();
 }
 }

protected void listeDoldur() {
 DataTable dt = veritabani.DataTableGetir(&quot;select * from kategoriler order by sira asc&quot;);
 foreach (DataRow dr in dt.Rows)
 {
 liste.Text += &quot;

	&lt;li id=&quot;\&amp;quot;sira_&amp;quot;&quot;&gt;&quot; + dr[&quot;kategoriadi&quot;].ToString() + &quot;&lt;/li&gt;

&quot;;
 }
 }
 </pre>
<p>kaydet.aspx.cs sayfamızın içeriği, yani sıralama işlemlerini veritabanına yazan sayfamız.</p>
<pre class="brush: csharp; title: ; notranslate">
 protected void Page_Load(object sender, EventArgs e)
 {
 string gelen = Request.Form.ToString().Replace(&quot;%5b%5d&quot;, &quot;[]&quot;).Replace(&quot;sira[]=&quot;, &quot;&quot;);
 char[] ayrac = new char[] { '&amp;amp;' };
 string[] gelenler = gelen.Split(ayrac);
 int i = 1;
 foreach (string veri in gelenler)
 {
 veritabani.guncelle(&quot;Update kategoriler set sira='&quot; + i + &quot;' where id=&quot; + veri + &quot; &quot;);
 i++;
 }
 }
 </pre>
<p>Örneğin tamamını indirmek için <span style="color: #ff0000;"><strong><a href="http://www.apostylee.com/resimler/Dosyalar/Siralama.rar">tıklayın</a></strong></span>. Çalışan örneğe buradan bakabilirsiniz.</p>
<div class="shr-publisher-180"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic -->]]></content:encoded>
			<wfw:commentRss>http://www.apostylee.com/jquery-ile-surukle-birak-yaparak-siralama-islemi/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
