<?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>Luigi Melisi &#187; sortable</title>
	<atom:link href="http://www.luigimelisi.com/tag/sortable/feed" rel="self" type="application/rss+xml" />
	<link>http://www.luigimelisi.com</link>
	<description>Development Blog : C# Code Samples,.NET Tips and Tricks</description>
	<lastBuildDate>Thu, 03 Mar 2011 09:01:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Riordinare gli elementi di una lista tramite Drag and Drop con jQuery</title>
		<link>http://www.luigimelisi.com/programmazione/net_framework/riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery</link>
		<comments>http://www.luigimelisi.com/programmazione/net_framework/riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery.html#comments</comments>
		<pubDate>Mon, 11 Jan 2010 13:22:41 +0000</pubDate>
		<dc:creator>Luigi Melisi</dc:creator>
				<category><![CDATA[.Net Framework]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[getOrder]]></category>
		<category><![CDATA[sortable]]></category>
		<category><![CDATA[visuale]]></category>

		<guid isPermaLink="false">http://www.luigimelisi.com/?p=575</guid>
		<description><![CDATA[Attraverso jQuery.UI è possibile sfruttare un comodo sistema, chiamato sortable, che consente di applicare facilmente il drag &#38; drog a liste.
Una volta scaricato jQuery.UI, l&#8217;aggiunta del supporto per il drag &#38; drop ad una serie di elmenti è semplice.
Per prima cosa è necessario comporre un markup  [...]]]></description>
			<content:encoded><![CDATA[<p>Attraverso<strong> jQuery.UI</strong> è possibile sfruttare un comodo sistema, chiamato sortable, che consente di applicare facilmente il drag &amp; drog a liste.<br />
Una volta scaricato<strong> jQuery.UI</strong>, l&#8217;aggiunta del supporto per il drag &amp; drop ad una serie di elmenti è semplice.<br />
Per prima cosa è necessario comporre un markup che consenta facilmente di gestire dal punto di vista visuale questo comportamento, quindi è opportuno lavorare con uno stile che indichi chiaramente che l&#8217;elemento può essere trascinati. A questo scopo si presta bene un elenco puntato:</p>
<blockquote>
<pre><strong>&lt;ul id="tutorials"&gt; </strong></pre>
<pre><strong>&lt;li id="1"&gt;ASP.NET&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="3"&gt;ASP.NET 3.5&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="4"&gt;ASP.NET 4.0&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="99"&gt;Silverlight&lt;/li&gt; </strong></pre>
<pre><strong>&lt;li id="15"&gt;Entity Framework&lt;/li&gt; </strong></pre>
<pre><strong>&lt;/ul&gt;</strong></pre>
</blockquote>
<p><span id="more-575"></span><br />
Probabilmente l&#8217;ordinamento scelto dall&#8217;utente dovrà poi essere gestito lato server dalla nostra applicazione. Purtroppo, però, l&#8217;elenco puntato non viene inviato in post dal browser e pertanto diventa necessario prevedere un campo hidden in cui salvare questa informazione (nell&#8217;esempio allegato è un campo di tipo text affinché sia possibile vedere come varia al variare dell&#8217;ordinamento).<br />
L&#8217;ID associato agli elementi è in questo caso l&#8217;ID dell&#8217;elemento all&#8217;interno del database, ma è possibile adottare tecniche alternative, l&#8217;importante è poi avere una strategia unica per salvare la posizione corrispondente nel database.</p>
<p>A questo punto è sufficiente scrivere un piccolo pezzo di codice che attivi l&#8217;ordinamento:</p>
<blockquote>
<pre><strong>&lt;scriptcolor: darkred;" lang="EN-GB"&gt;text/javascript"&gt;&lt;!-- </strong></pre>
<pre><strong>var setSelector = "#tutorials"; </strong></pre>
<pre><strong>$(function() { </strong></pre>
<pre><strong>  $(setSelector).sortable({ </strong></pre>
<pre><strong>    axis: "y", </strong></pre>
<pre><strong>    cursor: "move", </strong></pre>
<pre><strong>    update: function() { getOrder(); } </strong></pre>
<pre><strong>  }); </strong></pre>
<pre><strong>   </strong></pre>
<pre><strong>  getOrder(); </strong></pre>
<pre><strong>}); </strong></pre>
</blockquote>
<pre>function getOrder() {</pre>
<pre>  $('#order').val($(setSelector).sortable("toArray"));</pre>
<pre>}</pre>
<pre>//--&gt;&lt;/script&gt;</pre>
<p>La funzione getOrder si occupa di salvare l&#8217;ordine corrente all&#8217;interno di un campo nascosto: a questo punto per inviare il valore direttamente al server è sufficiente inserire un pulsante di submit della form.<br />
Questa tecnica è facilmente implementabile con ASP.NET grazie all&#8217;uso del controllo Repeater, che consente di produrre un markup con dati prelavati da database, sostituendo solo l&#8217;ID dove serve:</p>
<pre>&lt;asp:Repeater id="TutorialList" runat="server"&gt;</pre>
<pre>  &lt;HeaderTemplate&gt;</pre>
<pre>    &lt;ul id="tutorials"&gt;</pre>
<pre>  &lt;/HeaderTemplate&gt;</pre>
<pre>  &lt;ItemTemplate&gt;</pre>
<pre>     &lt;li id="&lt;%#Eval("ID")%&gt;"&gt;&lt;%#Eval("TutorialName")&lt;/li&gt;</pre>
<pre>   &lt;/ItemTemplate&gt;</pre>
<pre>  &lt;FooterTemplate&gt;</pre>
<pre>    &lt;ul id="tutorials"&gt;</pre>
<pre>  &lt;/FooterTemplate&gt;</pre>
<pre>&lt;/asp:Repeater&gt;</pre>
<p><a href="http://www.youbuy.it/lastminute.aspx" rel="nofollow" target="_blank"><img class="aligncenter" title="YouBuy.it - Last Minute - Offerte Sottocosto" src="http://images.youbuy.it/adv/last.jpg" alt="last Riordinare gli elementi di una lista tramite Drag and Drop con jQuery" width="450" height="600" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.luigimelisi.com/programmazione/net_framework/riordinare-gli-elementi-di-una-lista-tramite-drag-and-drop-con-jquery.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

