JQuery + Ordinamento ListView

martedì 30 aprile 2013 - 10.45
Tag Elenco Tags  VB.NET  |  Javascript

gsistemi Profilo | Junior Member

Ciao a tutti,

ho un listview compilato con un elenco di record tipo questo:

<asp:listview id="rptnomi" runat="server"><itemtemplate>
<div class="nome"><%# databinder.eval(container.dataitem, "path") %> <asp:label id="progr" text='<%# databinder.eval(container.dataitem, "progr") %>' runat="server" clientidmode="static" /></div>
</ContentTemplate></asp:UpdatePanel>
<asp:button id="invia" text="Invia" runat="server" />
attraverso una funzione di jquery cliccando e trascinando il div posso disporli in un ordine diverso. La funzione è questa:

$( "div" ).sortable();
$( "div" ).disableSelection();

Cliccando sul pulsante invia vorrei controllare il nuovo ordinamento, verificare se è cambiato ed eventualmente fare l'aggiornamento sul Db Sql:

sub invia_click( s as object, e as eventargs ) handles invia.click
dim i as integer
for i = 0 to rptnomi.items.count -1
dim lbl as label = ctype( rptnomi.items(i).findcontrol("progr"), label )
if lbl.text <> i then
' fai la modifica sul db
end if
next i
end sub

Il problema è che una volta premuto il pulsante invia la pagina si aggiorna e i div si ridispongono nell'ordine orginale. Ho provato un paio di soluzioni ma senza successo:

- ho incluso il listview in un updatepanel e in pulsante in un altro, il listview non si riordina ma quando vado a scorrere i record sono nell'ordine originale.
- ho aggiunto un altro controllo label all'interno del listview che vado a gestire così:

<asp:listview id="rptnomi" runat="server"><itemtemplate>
<div class="nome"><%# databinder.eval(container.dataitem, "path") %> <asp:label id="progr" text='<%# databinder.eval(container.dataitem, "progr") %>' runat="server" clientidmode="static" /> <asp:label id="nuovo" runat="server" clientidmode="static" /></div>
</ContentTemplate></asp:UpdatePanel>
<asp:button id="invia" text="Invia" runat="server" />

<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
function BeginRequestHandler(sender, args)
{
this.$list_item = $("div #nuovo");
for( i=0; i<=9; i++ ){
this.$list_item.eq(i).val(i);
}
}
</script>

Il valore viene visualizzato correttamente ma non c'è verso di farlo leggere al lato server.

Come faccio?!?! Grazie a tutti!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5