115 messaggi dal 01 novembre 2012
Ciao, ok ho fatto tutto ma mi da errore nella finestra di deguger

        <asp:HyperLink ID="HyperLink1" rel="prettyPhoto" NavigateUrl='<%# Container.DataItem%>' runat="server">



con precisione mi dice: Convalida (ASP.Net): 'rel' non è un attributo valido dell'elemento 'HyperLink'.

infatti se clicco sull'immagine fa un accenno che mi vuole partire l'apertura della foto al centro oscurando il sottofondo della magina ma si blocca dandomi questo errore

Errore di run-time di Microsoft JScript: 'Array' non è definito

pertanto credo che sia dovuto al fatto che non riconosce il riferimento "rel" cosa molto strana
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

modelrc ha scritto:

Convalida (ASP.Net): 'rel' non è un attributo valido dell'elemento 'HyperLink'.

Ignoralo pure, quello è solo un messaggio informativo che non precluderà il buon funzionamento della galleria.

modelrc ha scritto:

Errore di run-time di Microsoft JScript: 'Array' non è definito

Onestamente non so da cosa possa dipendere ma vedo che qualcun altro ha avuto lo stesso problema, poi svanito chissà come.

Che versione di Internet Explorer stai usando? La galleria funziona correttamente se la vedi con Chrome o Firefox?

Quando hai scaricato prettyPhoto da qui era la "Production Version"? Dovresti usare quella, che è considerata "stabile".

ciao,
Moreno

Enjoy learning and just keep making
115 messaggi dal 01 novembre 2012
è vero hai ragione l'ho compilato e provato con Explorer mi da l'errore che ti ho detto ed ho la versione 9 mentre col firefox tutto ok ....cosa molto strana cmq è ok ora vediamo come presonalizzarla meglio...
115 messaggi dal 01 novembre 2012
Ciao Moreno allora ho sistemato il tutto ora è ok sia con Explorer che con FireFox ma sorge un problema di lentezza di caricamento della pagina ora mi spiego meglio per ogni record del database corrispondono 12 o 13 foto 640 x 480 e quindi appena passo al record successivo dovrebbe caricarne un altro set di 12 o 13 foto e il tutto risulta lentissimo quindi come fare ?
Seconda domanda ho notato proprio in questa verifica dato che va lento che quando mi sposto da un record all'altro mi ricarica sempre la pagina ad incominciare dalla testata e anche il menù che è sempre in testata quindi la domanda è esiste un modo da far caricare solo la pagina sotto e non tutto ?
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
noti la lentezza solo quando il sito è pubblicato online o anche in locale?

Se la noti solo online, dovresti creare delle miniature per quelle immagini 640x480 che, nonostante non siano grandissime, costringono comunque l'utente a scaricare almeno qualche centinaio di kilobytes.
Dunque, per velocizzare il caricamento della pagina, si potrebbero mostrare delle immagini più piccole (ad esempio 120x90) che aprono l'ingrandimento solo quando vengono cliccate.

Le miniature di solito si creano quando l'utente fa l'upload delle immagini: in quell'occasione salvi l'immagine originale e ne salvi anche una versione rimpicciolita. Qui trovi del codice:
http://stackoverflow.com/questions/1582499/resize-image-gdi-graphics-net/1587486#1587486

Tuttavia, non sempre le immagini provengono da upload. Magari si tratta di immagini che carichi tu stesso via FTP e, in questo caso, potrebbe aver senso preparare le miniature con Photoshop o altro software di grafica.

In un caso o nell'altro, dovrai modificare la galleria affinché il controllo Image punti alla miniatura, mentre l'HyperLink continui a puntare all'ingrandimento.


esiste un modo da far caricare solo la pagina sotto e non tutto ?

Sì, mettendo la galleria in un UpdatePanel. Trovi un'introduzione in questo articolo di Marco Leoncini.
http://www.aspitalia.com/script/860/Controlli-UpdatePanel-UpdateProgress-ASP.NET-AJAX-1.0.aspx


ciao,
Moreno
Modificato da BrightSoul il 28 agosto 2013 00.02 -

Enjoy learning and just keep making
115 messaggi dal 01 novembre 2012
Si il problema di lentezza risulta evidente on-line. Per le miniature ho un problema che io ho già una miriade di cartelle diciamo più di mille che contengono dalle 12 alle 15 foto quindi ho bisogno che quando imposto la cartella in questione se non esistono crea le miniature e dopo le carica, in pratica come fa dotnetgallery.

Ferdinando
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Ferdinando,

modelrc ha scritto:

ho bisogno che quando imposto la cartella in questione se non esistono crea le miniature

Ok, in questa discussione (primissimi post) abbiamo visto come sia possibile generare le miniature "al volo" usando un HttpHandler, così non sarebbe obbligatorio memorizzarle su disco.

Se per te non è un problema che vengano salvate su disco, allora si può usare anche un altro sistema. Potremmo creare una sottocartella "miniature" per ognuna delle mille cartelle immagini che hai. Ovviamente non andrebbe fatto a mano ma automaticamente e secondo necessità, cioè solo quando si richiede alla pagina aspx di visualizzare una specifica cartella immagini.
Partiamo dal codice che abbiamo usato per elencare le immagini di una cartella.
var cartellaSito = Server.MapPath("~/");
var cartellaImmagini = Server.MapPath("~/categorie/divani");
var immagini = Directory.GetFiles(cartellaImmagini, "*.jpg").Select(img => img.Substring(cartellaSito.Length));

Modifichiamolo leggermente affinché per ogni immagine sia effettuato un controllo sulla relativa miniatura. Se non esiste ancora, andremo a crearla.
var cartellaSito = Server.MapPath("~/");
var cartellaImmagini = Server.MapPath("~/categorie/divani");
//Ogni cartella immagini avrà la sua sottocartella "miniature"
var cartellaMiniature = Path.Combine(cartellaImmagini, "miniature");
var immaginiOriginali = Directory.GetFiles(cartellaImmagini, "*.jpg");

//controllo che la cartella "miniature" esista e in caso negativo la creo
if (!Directory.Exists(cartellaMiniature))
    Directory.CreateDirectory(cartellaMiniature);

//per ognuna delle immagini originali...
var immagini = immaginiOriginali.Select(originale => {

    //mi calcolo il percorso della miniatura
    var miniatura = Path.Combine(cartellaMiniature, Path.GetFileName(originale));

    //se la miniatura non esiste, allora vado a crearla
    if (!File.Exists(miniatura))
    {
        //Funzione che ridimensiona l'immagine originale e salva la miniatura sul suo percorso
        CreaMiniatura(originale, miniatura);
    }

    //restituisco un tipo anonimo che contiene entrambi i percorsi virtuali: sia dell'immagine originale che della miniatura
    return new {
                Originale = originale.Substring(cartellaSito.Length - 1).Replace(Path.DirectorySeparatorChar, '/'),
                Miniatura = miniatura.Substring(cartellaSito.Length - 1).Replace(Path.DirectorySeparatorChar, '/')
    };
});

Qui trovi due cose a cui fare attenzione:
  • La funzione CreaMiniatura dovrà leggere l'immagine originale e salvare la miniatura. Qui trovi del codice che ti aiuterà a scriverla: http://www.codeproject.com/Articles/250346/Thumbnail-using-Csharp-Net
  • La variabile immagini ora sarà una collezione di un tipo anonimo che contiene due proprietà: Originale e Miniatura. Dato che la metti in binding con un ListView, dovrai fare degli aggiustamenti nel suo ItemTemplate. Da questo momento in poi, l'asp:Image visualizzerà la miniatura mentre l'HyperLink continuerà a puntare all'immagine originale.
    <asp:HyperLink ID="HyperLink1" rel="prettyPhoto" NavigateUrl='<%# Eval("Originale") %>' runat="server">
      <asp:Image ImageUrl='<%# Eval("Miniatura") %>' runat="server" Width="60" />
    </asp:HyperLink>
    


ciao,
Moreno
Modificato da BrightSoul il 30 agosto 2013 16.56 -

Enjoy learning and just keep making
115 messaggi dal 01 novembre 2012
ok per grandi linee ho capito proviamo prima con la traduzione da C# a VB

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.