ReorderList

martedì 23 novembre 2010 - 23.34
Tag Elenco Tags  C#  |  .NET 4.0

Gemini Profilo | Expert

Ciao a tutti
sto provando ad utilizzare un controllo ReorderList per ordinare delle immagini.
Quando clicco su un button voglio salvare queste immagini nell'ordine scelto dell'utente in un db.
Ho provato da codice con un ciclo a salvare salvare le immagini nell'ordine scelto dall'utente, ma sembra che al postback le immagini tornino nella posizione di partenza.
Qualcuno ha un esempio che permette di ordinare delle immagini e da salvare la posizione dell'immagine in un db?
Grazie mille

alx_81 Profilo | Guru

>Ciao a tutti
Ciao

>Quando clicco su un button voglio salvare queste immagini nell'ordine scelto dell'utente in un db.
come vai a salvarle le posizioni?

>Ho provato da codice con un ciclo a salvare salvare le immagini
>nell'ordine scelto dall'utente, ma sembra che al postback le
>immagini tornino nella posizione di partenza.
ma ricarichi la posizione da database al postback?

>Grazie mille
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Gemini Profilo | Expert

Ciao
mi spiego meglio.
All'inizio carico le immagini dal database. Ogni immagine ha associata una posizione. Queste immagini le carico un reorderlist. L'utente ordina le immagini con il mouse. Quando clicca su salva, eseguo questo ciclo:
List<tipoSettoreGallery> Photos()
{
List<tipoSettoreGallery> photos = new List<tipoSettoreGallery>();

foreach (ReorderListItem item in rlGallery.Items)
{
tipoSettoreGallery photo = new tipoSettoreGallery();

TextBox txtDescrizione = (TextBox)item.FindControl("txtDescrizione");
TextBox txtDescrizione_en = (TextBox)item.FindControl("txtDescrizione_en");
HiddenField hdIdPhoto = (HiddenField)item.FindControl("hdIdPhoto");

photo.Id_Photo_Settore = hdIdPhoto.Value;
photo.Descrizione = txtDescrizione.Text;
photo.Descrizione_en = txtDescrizione_en.Text;
photo.Posizione = (item.ItemIndex + 1).ToString();

photos.Add(photo);
}

return photos;
}

solo che le immagini me le ritrovo nella posizione di partenza e non nell'ordine in cui le ho caricate.

Quando parli di ricaricare le immagini, intendi che devo richiamare la funzione che mi ricarica le immagini dal db?
Grazie

sankyu Profilo | Senior Member

che proprieta metti nel SortOrderField del controllo? se vuoi che poi l'ordine venga mantenuto anche nel database devi aggiornare quella proprietà
esempio
SortOrderField = Posizione

se cambi la posizione dovresti cambiare anche il valore di posizione. Appena ho tempo posto un esempio con codice

Consulente e Sviluppatore .net in ambito finanziario
Dai un occhio al mio blog potrebbe tornarti utile
http://dotnetmemo.blogspot.com

Gemini Profilo | Expert

Questo è il mio ReorderList:
<asp:ReorderList ID="rlGallery" AllowReorder="true" DataKeyField="id_photo_settore"
DragHandleAlignment="Left" LayoutType="Table" runat="server"
OnItemDataBound="rlGallery_ItemDataBound" ShowInsertItem="true"
SortOrderField="posizione" ViewStateMode="Enabled" BorderStyle="None"
ClientIDMode="Static">
<ItemTemplate>
<div style="float: left; width: 550px; margin-bottom: 10px;">
<div style="float: left; height: 60px;">
<asp:Image ID="imgPhoto" Height="60" runat="server" />
</div>
<div style="float: left; height: 60px; width: 400px;">
<div style="float: left; height: 30px;">
<div class="row_titolo">
Descrizione</div>
<div class="row_campo">
<asp:TextBox ID="txtDescrizione" TextMode="SingleLine" CssClass="text_box" Columns="30"
runat="server"></asp:TextBox>
</div>
</div>
<div style="float: left; height: 30px;">
<div class="row_titolo">
Descrizione(en)</div>
<div class="row_campo">
<asp:TextBox ID="txtDescrizione_en" TextMode="SingleLine" CssClass="text_box" Columns="30"
runat="server"></asp:TextBox>
</div>
</div>
</div>
<div style="float: left; width: 20px; height: 60px; text-align: center;">
<asp:ImageButton ID="imgbElimina" OnClick="EliminaPhotoGallery" ImageUrl="immagini/delete_16.png"
runat="server" />
</div>
</div>
<asp:HiddenField ID="hdIdPhoto" runat="server" />
</ItemTemplate>
<DragHandleTemplate>
<div style="float: left; width: 18px; height: 60px; padding-top:25px; cursor:move;">
<img src="up_down.gif" title="sposta" />
</div>
</DragHandleTemplate>
</asp:ReorderList>

Altro piccolo problema: il movimento degli elementi da spostare non è fluido. In pratica, clicco sull'immagine per spostare il box e il box rimane agganciato al mouse e devo ricliccare per confermare lo spostamento.

Un bel esempio mi farebbe comodo. Non ho trovato un esempio chiaro e completo.
Grazie
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