Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Richiamare una classe che contiene funzioni di utilizzo generale

    ho creato una classe che contiene delle funzioni che verranno utilizzate in diverse parti della mia applicazione
    io ho creato un namespace di nome ASPNETGenerali
    e ho provato ad includerlo in una pagina con la riga
    <%@ Import Namespace="ASPNETGenerali" %>

    all'interno del dataGrid viene richiamata una funzione contenuta in questa classe e mi viene visualizzato il seguente errore

    Nome "ControllaCategorie" non dichiarato.

    come posso fare?

  2. #2

    Re: Richiamare una classe che contiene funzioni di utilizzo generale

    Originariamente inviato da brutusin
    ...ho provato ad includerlo in una pagina con la riga
    <%@ Import Namespace="ASPNETGenerali" %>
    Importare un namespace non e' la stessa cosa di includere file con codice e funzioni (es. classic asp).
    L'importazione di un namespace (in estrema sintesi il sistema dei namespace permette di ordinare meglio le classi e i componenti della tua applicazione in uno spazio dei nomi gerarchico) ti consente di riferirti a classi e componenti contenuti nel namespace importato senza bisogno di scrivere tutto il suo percorso.
    Per usare codice contenuto in una classe appartenente al tuo progetto, devi prima istanziare un oggetto basato sulla classe per poi accedere ai suoi membri (l'istanza non e' necessaria se il membro e' shared in vb o static in c#).
    Saluti a tutti
    Riccardo

  3. #3
    e non esiste qualche soluzione simile al semplice include di ASP?
    giusto per le funzioni più utilizzate?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    si che esiste, e te lo hanno già detto:
    o usa un modulo se sei in basic
    o usa una classe con i metodi shared (static in c#)

    queste soluzioni sono assolutamente migliori di quelle tipo include di asp
    Pietro

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    non so se ti serva, io ho un progetto chiamato Libreria che ha un modulo, ModuloWeb, ed una classe, LibreriaWeb.
    La classe e la libreria hanno esattamente gli stessi metodi. Sono stati creati solo con lo scopo di capire cosa convenisse utilizzare.
    Dopo svariate prove, mi sono accorto di utilizzare quasi esclusivamente il modulo.
    Detto questo, nelle pagine che debbono utilizzare i metodi del modulo, metto:
    <%@ import namespace="Libreria.ModuloWeb" %>

    e uso nella pagina per esempio: <%=Autore%>

    Funziona perfettamente.
    Con la classe, nel codice sottostante, creo una variabile protetta, j e, nella pagina la uso così:
    <%=j.autore%>

    ciao
    Pietro

  6. #6
    ottimo adesso va !!
    però ho trovato un altro problemino legato alla gestione delle classi

    le funzioni inserite in quella classe lavorano con una classe che opera sul db Access (una piccola classe che mi fa le insert, update, select che mi estrae il numero di records etc etc)

    quindi nel file che contiene le funzioni generali ho inserito la stringa
    Imports ASPNETAccess
    che è il nome del namespace che lavora con access

    la funzione controllaCategorie utilzza questo tipo di codice
    dim objSelect = new dbAccess
    dim ritorna as string
    ritorna = objSelect.SelezionaValore(strSelect,"nomecategoria ")

    selezionaValore è una function contenuta classe dbAccess

    l'errore che mi da è
    Impossibile trovare il membro pubblico "SelezionaValore" nel tipo "dbAccess".

  7. #7
    Originariamente inviato da brutusin
    selezionaValore è una function contenuta classe dbAccess
    questa funzione l'hai dichiarata public?
    Saluti a tutti
    Riccardo

  8. #8

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da brutusin
    ottimo adesso va !!
    però ho trovato un altro problemino legato alla gestione delle classi

    le funzioni inserite in quella classe lavorano con una classe che opera sul db Access (una piccola classe che mi fa le insert, update, select che mi estrae il numero di records etc etc)

    quindi nel file che contiene le funzioni generali ho inserito la stringa
    Imports ASPNETAccess
    che è il nome del namespace che lavora con access

    la funzione controllaCategorie utilzza questo tipo di codice
    dim objSelect = new dbAccess
    dim ritorna as string
    ritorna = objSelect.SelezionaValore(strSelect,"nomecategoria ")

    selezionaValore è una function contenuta classe dbAccess

    l'errore che mi da è
    Impossibile trovare il membro pubblico "SelezionaValore" nel tipo "dbAccess".
    Trovo abbastanza difficoltoso capire quello che vuoi dire. Il messaggio di errore è chiaro. Non esiste un metodo pubblico nella classe dbAccess. Ma sei sicuro che quel metodo non bisogna richiamarlo con xyz.abc.dbAccess.SelezionaValore???


    O non avrai una classe private annidata???

    Prova a mandare un po' di codice, però l'essenziale, giusto per capire.
    Pietro

  10. #10
    ok provo a farmi capire un po' meglio
    Questo è il codice della classe che interagisce con il database (ridotta al minimo ovviamente)

    Imports System
    Imports System.Data
    Imports System.Data.OleDb

    Namespace ASPNETAccess
    Public Class dbAccess
    private ConnectionString as string = System.Configuration.ConfigurationSettings.AppSett ings("connectionString")
    private objConn as OleDbConnection
    private objCmd as OleDbCommand
    private objReader as OleDbDataReader

    public function SelezionaValore(stringa as string) As String
    try
    objReader = SelectSQL(stringa)
    While objReader.Read()
    return objReader("campodaselezionare")
    End While
    objReader.Close()
    catch ex as OleDbException
    return ""
    end try
    End Function
    End Class
    End Namespace


    e all'interno della classe che racchiude tutte le funzioni generiche utilizzo il metodo SelezionaValore

    Imports System
    Imports Microsoft.VisualBasic
    Imports ASPNETAccess

    Namespace ASPNETGenerali
    Public Class Generali
    shared public Function ControllaCategorie(valoreId as object) As string
    IF VarType(valoreId) = VariantType.Null THEN
    return "Non Presente"
    ELSE
    Dim strSelect as string = "SELECT nomecategoria FROM tbcategoriamerceologica WHERE id = "& CINT(valoreId) &""
    dim objSelect = new dbAccess
    dim ritorna as string
    ritorna = objSelect.SelezionaValore(strSelect,"nomecategoria ")
    return ritorna
    END IF
    END Function

    End Class
    End Namespace

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.