Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Errore con Repeater

  1. #1

    Errore con Repeater

    E' la priam volta che uso questo controllo e mi è uscito questo errore che non capico...
    Dunque l'errore che ho ottengo è questo:
    Object variable or With block variable not set

    Vi posto il codice:
    questo è il codebehind:
    codice:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
            Carica_Archivio()
    
        End Sub
    
        Sub Carica_Archivio()
            Try
                id_archivio = Request.QueryString("pid")
    
                conn = CType(Session("connessione"), Data.OleDb.OleDbConnection)
                conn.Open()
    
                MYSQL = "SELECT *FROM tab_archivio WHERE ID_archivio = " + id_archivio
                MyDA = New Data.OleDb.OleDbDataAdapter(MYSQL, conn)
                MyDS = New DataSet()
                MyDA.Fill(MyDS, "tab_archivio")
    
                RptArchivio.DataSource = MyDS.Tables("tab_archivio").DefaultView
                DataBind()
    
            Catch ex As Exception
                lblerrore.Text = ex.Message & "
    " & ex.StackTrace
    
            Finally
                conn.Close()
            End Try
    
        End Sub
    E questo è il controllo repeater:

    codice:
    <asp:Repeater
     ID="RptArchivio"
     runat=server>
     
     <HeaderTemplate>
        <table width=600 cellpadding=0 cellspacing=0>
            <tr>
                <td><%#Container.Dataitem("ragione") %></td>
            </tr>
     </HeaderTemplate>
     <ItemTemplate>
        <tr>
            <td><%#Container.Dataitem("indirizzo") %></td>
        </tr>
     </ItemTemplate>
     
     <FooterTemplate>
     </table>
     </FooterTemplate>
     
     </asp:Repeater>
    Sapete darmi una mano?
    Grazie

  2. #2

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho provato con visual studio 2005 e non me lo lascia neanche compilare.

    :master: da quello che ho capito, bisogna, per evitare errori a run-time, mettere SEMPRE la direttiva

    <compilation strict="true" explicit="true">

    nel web.config e, nel codice sottostante, la direttiva, Option Strict On

    Fatto questo, siamo obbligati a dichiarare sempre le variabili.
    Nel nostro caso, la variabile va dichiarata fuori di Try perchè, se la si dichiara dentro, non viene vista fuori, ossia nel blocco Finally.




    L'errore, comunque si verifica perchè non si può mettere <%#... dentro lo HeaderTemplate
    Pietro

  4. #4
    Scusami pietro, ma possibile che adesso devo riscrivere tutto il codice del programma?!?!
    Se modifico la direttiva come dici tu devo ricontrollare tutte le pagine, e arrivato al mio punto sono davvero tante...

    Possibile che non c'è una soluzione diversa, o magari un altro metodo per richiamare il record che mi proviene dalla query?
    Grazie mille!

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    L'errore, comunque si verifica perchè non si può mettere <%#... dentro lo HeaderTemplate

    poi mettere Dim conn As OleDbConnection = Nothing fuori di try
    Pietro

  6. #6
    Originariamente inviato da pietro09
    L'errore, comunque si verifica perchè non si può mettere <%#... dentro lo HeaderTemplate
    ECCO!!!
    Era per questo!!!

    Perfetto, adesso funge!!
    Graçias!!

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Guarda se ti può servire:
    codice:
        Sub Carica_Archivio()
            Dim dt As DataTable = Nothing
            Dim sql As String = "SELECT * FROM campi "
            Try
                dt = libreria.GetDataTable(StringaConnessioneTest, sql)
    
                RptArchivio.DataSource = dt
                
                Me.RptArchivio.DataBind()
    
            Catch ex As Exception
                PrintLn(ex.ToString)
               
            End Try
    
        End Sub
    la funzione GetDataTable si fa una volte per tutte, si mette in libreria, e ci si dimentica come è fatta
    Pietro

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    conn = CType(Session("connessione"), Data.OleDb.OleDbConnection)

    nelle prossime applicazioni, ti sconsiglio di fare ste cose...

  9. #9
    Originariamente inviato da djciko
    nelle prossime applicazioni, ti sconsiglio di fare ste cose...
    Perchè? In cosa sbaglio?

    Ho messo nel global.asax la stringa di connessione, e poi la richiamo ogni qualvolta mi serve.
    C'è un metodo migliore e consigliato?

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    parlavo del fatto di mettere la connessione in sessione

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.