165 messaggi dal 10 aprile 2001
Hai ragione, scusa: effettivamente per me è chiaro..ma solo per me!
Allora, innanzitutto si tratta di una pagina il cui compito è quello di filtrare gli "item" (o come dir si voglia).
Vi sono 3 tipi diversi di "filtraggi" (tutti nella stessa pagina):
1)tramite selezione di 4 menù a tendina (nel senso che la query ha 4 campi nella WHERE e l'insieme di questi 4 da il risultato), la quale dovrebbe produrre una cornice-immagine per ogni Item filtrato (e fin qui funziona), e poi cliccando su tale cornice-immagine dovrei vedere le "sottoimmagini" di tale item.
2)tramite l'imputazione dell'ID dell'item desiderato in una textbox (e successivo click sul pulsante OK). Questo funziona...nel senso che vedo la cartella "album" e se la clicco vedo le 3 immagini sottostanti (più un link che punta ad una pagina che contiene altre informazioni riguardo l'item in questione...giusto per completezza e conoscenza ndr)
3)tramite selezione da un quinto menù a tendina, la quale dovrebbe produrre una cornice-immagine per ogni Item filtrato, e poi cliccando su tale cornice-immagine dovrei vedere le "sottoimmagini" i tale item.

Rispondendo alla tua domanda: l'album non esiste, esistono solo n foto con lo stesso ID (che sarebbe l'ID dell'album da come abbiamo trattato l'argomento in precedenza); ad una di esse potrei aggiungere un campo chiamato "default" (o simili) per far si che essa sia quella per l'album e le altre quelle ivi contenute. Il sqldatasource da cui attingo i dati punta ad una StoreProcedure (che è il risultato di una query su 6 tabelle in inner join...)
Innazitutto pensavo che forse dovrei seguire la strada di creare una StoreProcedure per ognuno dei 3 tipi di filtraggio sopraelencati, in quanto cambiano i campi della "where" a seconda del filtro applicato.
Il concetto però non cambia per il filtraggio nr 1) ed il nr 3). Nel senso che essi devono produrre una serie di "item". Ma dato che poi cliccando su di essi devo poter vedere le n numero di immagini associate, penso che dovrei usare due cicli differenti (il classico uno-a-molti).
Spero di essermi spiegato decentemente. Grazie infinite per l'attenzione.
Roberto
Modificato da robycave il 16 aprile 2014 15.31 -
Modificato da robycave il 16 aprile 2014 15.47 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Roberto,

robycave ha scritto:

l'album non esiste, esistono solo n foto con lo stesso ID

ok, benissimo, risolvere il problema sarà semplice e non richiederà altri cicli o repeater annidati. Devi solo fare in modo che per una sola delle immagini che recano lo stesso ID compaia anche il link dell'album.

Dunque ci saranno casi in cui l'ItemTemplate genererà un link e casi in cui ne genererà due (quello per l'immagine e quello per l'album).

L'ItemTemplate del tuo Repeater dovrebbe contenere qualcosa del genere (cogli giusto il senso della cosa).
<ItemTemplate>
<a href="percorso.aspx?id=<%# Eval("IdImmagine") %>" data-ngthumb="thumb.aspx?id=<%# Eval("IdImmagine") %>" data-ngalbumid="<%# Eval("IdAlbum") %>" data-ngdesc="<%# Eval("Descrizione") %>"><%# Eval("Descrizione") %></a>
<!-- e qui il link all'album, che sarà reso visibile solo se è l'immagine predefinita -->
<asp:PlaceHolder runat="server" Visible='<%# ((int) Eval("Default")) == 1 %>'>
<a href="percorso.aspx?id=<%# Eval("IdImmagine") %>" data-ngthumb="thumb.aspx?id=<%# Eval("IdImmagine") %>" data-ngid="<%# Eval("IdAlbum") %>" data-ngkind="album" data-ngdesc="<%# Eval("Descrizione") %>"><%# Eval("Descrizione") %></a>
</asp:PlaceHolder>
</ItemTemplate>

Quindi grazie ad un campo "Default" valorizzato ad 1, il PlaceHolder verrà mostrato, insieme al suo contenuto che è il link che rappresenta l'album.

ciao,
Moreno

Enjoy learning and just keep making
165 messaggi dal 10 aprile 2001
Grande Maestro! Funziona tutto benissimo...
La questione dei 3 differenti filtri, l'ho risolta così:
Protected Sub Valuta()
Select Case varX
Case 3
Repeater.DataSource = SqlDataSourceFilter
Repeater.DataBind()
Case 2
Repeater.DataSource = SqlDataSourceTN
Repeater.DataBind()
Case 1
Repeater.DataSource = SqlDataSource
Repeater.DataBind()
End Select
End Sub
..praticamente creando 3 StoredProcedure, ognuna di esse associate a un sqldatasource e in fase di esecuzione assegno il datasource desiderato al Repeater.

Ma non poteva non esserci un ma...:(
Volendo passare una variabile che esiste fuori dal Repeater, come si fa? Ho ovviato in altro modo, ma mi resta la curiosità di come gestire questa casistica qualora in futuro dovesse rendersi necessaria.

L'occasione è gradita per ringraziare ancora e vivamente, questi grandiosi aiuti e insegnamenti.

Saluti
Roberto
Modificato da robycave il 22 aprile 2014 15.59 -
11.886 messaggi dal 09 febbraio 2002
Contributi
Ottimo!

robycave ha scritto:

Volendo passare una variabile che esiste fuori dal Repeater, come si fa?

Dovresti portare la dichiarazione di quella variabile fuori da metodi come il Page_Load, affinché sia visibile dal Repeater o da qualsiasi altro metodo per tutto il ciclo di vita della pagina.

Ad esempio, potresti dichiararla come campo all'interno della classe della pagina.
Partial Class Default
    Inherits System.Web.UI.Page

    'Ecco il campo
    Protected NomeCampo As String

End Class

Dall'ItemTemplate del Repeater potrai referenziarla così, semplicemente chiamandola per nome:
<ItemTemplate><%= NomeCampo %>
</ItemTemplate>

Allo stesso modo potrai leggere e scrivere il suo valore dal codefile, da un metodo qualsiasi.

Qui trovi una guida introduttiva ai campi e agli altri membri di una classe.
http://support.microsoft.com/kb/308230/it

ciao,
Moreno

Enjoy learning and just keep making
165 messaggi dal 10 aprile 2001
Grazia Moreno.
Che tu sappia, sarebbe possibile aggiungere una specie di didascalia ad ogni foto che funga da link verso una pagina aspx?

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.