Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179

    Elenco record fino alla fine

    Ho questo codice:
    Codice PHP:
                Dim cmdLoginA As New OleDbCommand("SELECT * FROM Utenti WHERE [Livello] = '5'"ConnLoginA)
                
    Dim drA As OleDbDataReader cmdLoginA.ExecuteReader
                
    While drA.Read()
                    
    'Scrivo nelle stringhe
                    NomeUtente = drA("nome")
                    CognomeUtente = drA("cognome")
                    IDUtenteX = drA("code")
                    '
    Imposto i valori nella pagina aspx
                    Label1
    .Text = (CognomeUtente " " NomeUtente " - " IDUtenteX)
                
    End While 
    Visualizzo in Label1.Text 1 solo valore.
    Avrei la necessità di visualizzare tutti gli utenti con Livello = 5 (come da select).
    Con ASP usavo EOF, ma qui non saprei come e dove metterlo.

    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Ogni volta aggiorni sempre la stessa (ed unica) label perciò alla fine del ciclo ti troverai sempre e solo l'ultimo utente.

    cambia l'ultima riga con:

    Label1.Text += (CognomeUtente & " " & NomeUtente & " - " & IDUtenteX) & "
    "

    (magari al posto della label usa un Literal)

  3. #3
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    Grazie mille.
    Era così semplice che quasi mi vergogno...

    Perchè è meglio una literal?

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    il label per come è inteso, viene renderizzato dentro uno span. Visto che stai renderizzando direttamente html (per via del tag
    ) e che stai scrivendo su piu linee trovo poco corretto avere html tipo
    codice:
    <span>nome
    nome
    </span>
    il literal invece renderizza il testo cosi com'è senza wrapparlo in un tag html specifico.

    solo un appunto: questo tipo di approccio va evitato il piu possibile perchè si presta molto ad exploit. Se un hacker riesce ad infilare del javascript dentro i campi del db (parlo in generale non del caso specifico) rischi di servire una pagina con javascript maligno dentro!

    Per questo motivo in asp.net si tende ad usare il piu possibile tag e costrutti gia presenti nel framework e che si occupano di per se della generazione sicura dell'html. Nel tuo caso per esempio potevi direttamente utilizzare un SQLDATASOURCE e un REPEATER.

    Questo non vuol dire che non puoi usare il "vecchio" modello di programmazione (retaggio di asp classic) utili per svariati casi. L'unica accortezza è quella di usare per tutti gli output potenzilmente pericolosi la funzione di HttpServerUtility.HtmlEncode.

    codice:
    NomeUtente = HttpServerUtility.HtmlEncode(drA("nome"))
    //per tutti i testi che peschi dal db...

  5. #5
    io utilizzerei piuttosto un repeater o un datalist:

    codice:
    <asp: DataList ID="DataList1" runat="server">
    <ItemTemplate>
        <%# Eval("CognomeUtente") %> - <%# Eval("NomeUtente") %>
    </ItemTemplate>
    </asp: DataList>
    codice:
    Dim drA As OleDbDataReader = cmdLoginA.ExecuteReader
    DataList1.DataSource=drA
    DataList1.DataBind()

  6. #6
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    Non utilizzo repeater perchè non so passare i dati contenuti nell'ItemTemplate da .aspx a .aspx.vb.
    Per questo puntavo tutto nel file separato.

    Nell'esempio che mi hai messo se ho capito bene
    codice:
    DataList1.DataSource=drA
    recupera il valore
    codice:
    <%# Eval("CognomeUtente") %> - <%# Eval("NomeUtente") %>
    impostato in
    codice:
    NomeUtente = drA("nome")
    CognomeUtente = drA("cognome")

  7. #7
    Originariamente inviato da osgb
    Non utilizzo repeater perchè non so passare i dati contenuti nell'ItemTemplate da .aspx a .aspx.vb.
    ???? che vuoi dire?
    non ho capito


    Questo codice serve per assegnare al repeater/datalist la fonte dati, che è il tuo DataReader
    codice:
    DataList1.DataSource=drA



    Questo codice significa che, per ogni riga del datareader (infatti è dentro itemtemplate),
    il repeater/datalist scrive il valore dei due campi: campo CognomeUtente, campo NomeUtente.
    Per campo intendo il nome della colonna del datareader
    codice:
    <%# Eval("CognomeUtente") %> - <%# Eval("NomeUtente") %>

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.