Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Un consiglio per un codice pulito

    Salve ragazzi,
    è vero si che BASTA CHE FUNZIONI, l'occhio vuole anche la sua parte quando si guarda il codice.

    Il codice è tutto, è come il motore di un auto, non si vede, ma è fondamentale, e se fatto/scritto male porta anche a dei malfunzionamenti.

    Dopo la filosofia, la pratica

    Nel mio CMS per esempio, devo decidere dinamicamente se aggiungere o no un elemento javascript come un effetto slideshow.

    Per mia necessità, devo anche poter settare le proprietà come altezza e larghezza in qualsiasi momento, quindi l'unica soluzione che mi è venuta in mente è quella di fare un write perima del CSS scritto a mano e poi del codice per effettuare il javascript.

    In poche parole, guardate che razza di scarabocchio viene!!

    Codice PHP:
     public string prendiSlideShowFull(string id)
        {
            
    string immagini "";
            
    string codice "";
            
    string height "";
            
    string intero "1";
            
    OleDbConnection Accesdb = new OleDbConnection();
            
    Accesdb.ConnectionString myConnectionString;
            
    OleDbCommand comando = new OleDbCommand();
            
    comando.Connection Accesdb;
            
    comando.CommandText "SELECT * FROM SIS_SLIDESHOWFULL_LISTA WHERE ID=@id";
            
    comando.Parameters.Add(new OleDbParameter("id"id));
            try
            {
                
    Accesdb.Open();
                
    OleDbDataReader esecuzione comando.ExecuteReader();
                while (
    esecuzione.Read())
                {  
    intero esecuzione["Id"].ToString();
                
    immagini += "<li class=\"slider" intero "Image\"> " +
                
    "<a href=\"\"><img src=\"" esecuzione["url"].ToString() + "\" alt=\"1\" /></a> " +
                
    "<span class=\"top\">[b]" esecuzione["Titolo"].ToString() + "[/b]
    esecuzione["Descrizione"].ToString() + "</span> ";           
                 
    height esecuzione["height"].ToString();
                }
                
    codice "<style type=\"text/css\" media=\"screen\"> #slider" intero " { height:  " height "; position: relative;  " +
                         
    "overflow: hidden; } #slider" intero "Content { width: 1024px; top: 0; margin-left: 0; } .slider" intero "Image{ " +
                         
    "  float: left; position: relative; display: none; } .slider" intero "Image span { position: absolute; font: 10px/15px Arial," +
                         
    "Helvetica, sans-serif; padding: 10px 13px; width: 1024px; background-color: #000; filter: alpha(opacity=70); -moz-opacity: 0.7; " +
                         
    "-khtml-opacity: 0.7; opacity: 0.7; color: #fff; display: none; } .clear { clear: both; } .slider" intero "Image span strong { " +
                         
    "font-size: 14px; } .top { top: 0; left: 0; } .bottom { bottom: 0; left: 0; } .left { top: 0; left: 0; width: 110px !important; " +
                         
    "height: 280px; } .right { right: 0; bottom: 0; width: 90px !important; height: 290px; } ul { list-style-type: none;} </style> " +
                          
    "<script type=\"text/javascript\"> function initSlider" intero "() {jQuery(\"#slider" intero "\").s3Slider({timeOut: 3000});}</script>";
                
    codice += "  <div id=\"slider" intero "\" > <ul id=\"slider" intero "Content\"><div style=\"position :absolute; top: 0px; left: 0px\">  " +
                         
    immagini "</div>  <div class=\"clear slider" intero "Image\"></div>[/list]</div>" +
                         
    "<script type=\"text/javascript\">initSlider" intero "();</script>";
            
            }
            catch
            {

            }
            finally
            {
                
    Accesdb.Close();
            }
            return 
    codice;
        } 
    Cosi funziona alla grande, il file CSS che stampa legge i valori dalla query e va bene.
    Ma lo sapete meglio di me che NON SI DOVREBBE FARE COSI.
    Chiedo quandi a voi, qual'è la soluzione milgiore, pulita e sbrigativa per fare ciò?

    Grazie in anticipo
    Response.Write("Tonyhhkx Programmer32");

  2. #2
    Dico anche che ciò mi è stato utile quando utilizzo più slideshow.
    Nel ciclo mi scrive tanti css quanti sono i slideshow quindi scrive il slideshow SLIDE1 per esempio, SLIDE2 e cosi via.
    Altrimenti se ne uso solo uno non posso utilizzarne più di uno e con parametri differenti.

    Secondo me (e spero che sbaglio) non credo ci sia una soluzione diversa per ottenere ciò che voglio...

    come detto spero che mi sbagli.
    Response.Write("Tonyhhkx Programmer32");

  3. #3

  4. #4
    Originariamente inviato da Gluck74
    usa un repeater
    non ne ho mai utilizzati e non sto ancora capendo come utlizzarlo nel mio caso
    I libri che ho non ne parla molto
    Response.Write("Tonyhhkx Programmer32");

  5. #5
    il repeater ti permette in pratica si scrivere il codice direttamente nella pagina aspx, invece di crearlo come hai fatto tu come una stringa.

    http://www.netrostar.com/Tutorials-9...use%20Repeater
    http://msdn.microsoft.com/en-us/magazine/cc163780.aspx

  6. #6
    Originariamente inviato da Gluck74
    il repeater ti permette in pratica si scrivere il codice direttamente nella pagina aspx, invece di crearlo come hai fatto tu come una stringa.

    http://www.netrostar.com/Tutorials-9...use%20Repeater
    http://msdn.microsoft.com/en-us/magazine/cc163780.aspx
    aaa ecco... ho provato cosi per esempio:

    Codice PHP:
      <asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1" 
            
    onitemcommand="Repeater1_ItemCommand">
            <
    ItemTemplate><a href="
                    <%# DataBinder.Eval(Container.DataItem, "
    url") %> ">CLICCA </a>

        </
    ItemTemplate>
        </
    asp:Repeater
    è utilisissimo perchè scrivo meglio, ma resta il fatto che il controllo stamperà sempre, invece avendolo in funzioni è più controllato visto che facendo in questo modo dovrei fare una ventina di repeater e controllali tutti . Ma apparte questo, credo mi risolva il problema dei file css e javascript.
    Ripeto è utilissimo per non fare il write del codice html, visto che per ora ho solo quella necessità, però non credo che con il repeater posso risolvere il problema dei file css.
    Response.Write("Tonyhhkx Programmer32");

  7. #7
    anzi, potrei mettere il repeater nell'head per dichiarare i file css cosi li stampa dentro l'head e non dentro il body.
    Provando semrba funzionare anche se l'elemento repeater non lo riconosce dentro l'head della pagina, però non da problemi di compilazione.
    Response.Write("Tonyhhkx Programmer32");

  8. #8
    mhmm no non va bene mettere un repeater dentro l'head...
    Credo che utilizzare il repeater (nel mio caso) mi creerebbe solo complicazioni visto che devo modificare tutti i css e javascript
    Response.Write("Tonyhhkx Programmer32");

  9. #9
    ma scusa.......... non ti perdere in un bicchiere d'acqua!!!!!!!!!!!

    dunque, "codice" sta fuori dal while, quindi "intero" sarà l'ulitmo id letto....
    ci inserisci comunque tutte le immagini caricate, ma dentro un unico container......

    sei proprio sicuro che ti serva mettere il css dinamico?

    spiega bene cosa vuoi fare

  10. #10
    Originariamente inviato da Gluck74
    ma scusa.......... non ti perdere in un bicchiere d'acqua!!!!!!!!!!!

    dunque, "codice" sta fuori dal while, quindi "intero" sarà l'ultimo id letto....
    ci inserisci comunque tutte le immagini caricate, ma dentro un unico container......

    sei proprio sicuro che ti serva mettere il css dinamico?

    spiega bene cosa vuoi fare
    dal codice scritto si capisce ben poco, però, se voglio utilizzare più immagini slide nel mio cms ogni richiamo allo slide deve avere il suo foglio di stile.
    Se chiamo lo SLIDER1 che fa riferimento ad un foglio di stile nel quale ci sono dichirate le proprietà per SLIDER1 non posso richiamare un altro SLIDER1 all'interno della pagina. Mi servirebbe dichiarare uno SLIDER2 che fa riferimento ad un foglio di stile nel quale ci sono dichiarate le proprietà per SLIDER2.
    Nel mio codice per esempio, nel ciclo while si prepara tutte le immagini, poi scrive il css con dichiarazioni dello slider+intero (slider1 per esempio) e poi concatena le immagini caricate.
    Appena carica il secondo slide in un altra parte del mio cms rifà il ciclo, prende le nuove immagini e scrive un altro css con slider+intero (slider2 per esempio).


    Nel mio cms ho un sistema particolare che ora spiego.

    Decido un una posizione, top left down o right.
    Assegno a top un slide con 3 immagini, poi al right un altro slide con 6 immagini per esempio.
    Il mio sistema chiamerà la funzione da me scritta prima 2 volte in base alla posizione.
    Sotto c'è un altro sistema che gestisce dove stamparle.

    Questa per esempio è la mia funzione che controlla se ho aggiunto gli elementi nella posizione left, se ci sono, controlla quale e lo prende. Quindi se c'è uno slide esegue il case "slideshowfull" e fa la funzione che ho scritto prima:

    Codice PHP:
    public StringBuilder stampaAggiuntivoLEFT()
        {
            
    string tipo "";
            
    string id "";
            
    StringBuilder elementi = new StringBuilder();
            
    OleDbConnection Accesdb = new OleDbConnection();
            
    Accesdb.ConnectionString myConnectionString;
            
    OleDbCommand comando = new OleDbCommand();
            
    comando.Connection Accesdb;
            
    comando.CommandText "SELECT  * FROM SIS_AGGIUNTIVO WHERE (Posizione='left')  ORDER BY id ASC";
            try
            {
                
    Accesdb.Open();
                
    OleDbDataReader esecuzione comando.ExecuteReader();
                while (
    esecuzione.Read())
                {
                    
    tipo esecuzione["Tipo"].ToString();
                    
    id esecuzione["IdAggiuntivo"].ToString();

                    switch (
    tipo)
                    {
                        case 
    "scrolling":
                            {
                                
    elementi.Append(prendiScrolling(id));
                                break;
                            }
                        case 
    "image":
                            {
                                
    elementi.Append(prendiImage(id));
                                break;
                            }
                        case 
    "wrapper":
                            {
                                
    elementi.Append(prendiWrapper(id));
                                break;
                            }
                        case 
    "images":
                            {
                                
    elementi.Append(prendiImmaginiAnimate(id));
                                break;
                            }
                        case 
    "slideshow":
                            {
                                
    elementi.Append(prendiSlideShow(id));
                                break;
                            }
                        case 
    "slideshowfull":
                            {
                                
    elementi.Append(prendiSlideShowFull(id));
                                break;
                            }
                        case 
    "menuleft":
                            {
                                
    elementi.Append(prendiMenuLaterale());
                                break;
                            }
                        case 
    "dropmenuleft":
                            {
                                
    elementi.Append(prendiDropMenuSinistra2livelli());
                                break;
                            }
                    }
                }
            }
            catch
            {

            }
            finally
            {
                
    Accesdb.Close();
            }
            return 
    elementi;
        } 
    Response.Write("Tonyhhkx Programmer32");

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.