Condividi tramite


Impostazione a livello di programmazione dei valori dei parametri di ObjectDataSource (VB)

di Scott Mitchell

Scarica il PDF

In questa esercitazione si esaminerà l'aggiunta di un metodo a DAL e BLL che accetta un singolo parametro di input e restituirà i dati. L'esempio imposta questo parametro a livello di codice.

Introduzione

Come illustrato nell'esercitazione precedente, sono disponibili diverse opzioni per passare in modo dichiarativo i valori dei parametri ai metodi ObjectDataSource. Se il valore del parametro è hardcoded, proviene da un controllo Web nella pagina o si trova in qualsiasi altra origine leggibile da un oggetto origine Parameter dati, ad esempio, tale valore può essere associato al parametro di input senza scrivere una riga di codice.

Tuttavia, è possibile che il valore del parametro provenga da un'origine non già considerata da uno degli oggetti origine dati Parameter predefiniti. Se l'account utente supportato dal sito potrebbe essere necessario impostare il parametro in base all'ID utente attualmente connesso al visitatore. In alternativa, potrebbe essere necessario personalizzare il valore del parametro prima di inviarlo al metodo dell'oggetto sottostante ObjectDataSource.

Ogni volta che viene richiamato il metodo ObjectDataSource, il metodo ObjectDataSource genera prima l'evento SelectSelecting. Il metodo dell'oggetto sottostante di ObjectDataSource viene quindi richiamato. Dopo aver completato l'evento Selected di ObjectDataSource, la figura 1 illustra questa sequenza di eventi. I valori dei parametri passati al metodo dell'oggetto sottostante di ObjectDataSource possono essere impostati o personalizzati in un gestore eventi per l'evento Selecting .

OggettoDataSource selezionato e selezionato gli eventi vengono attivati prima e dopo che viene richiamato il metodo dell'oggetto sottostante

Figura 1: Il metodo ObjectDataSource Selected e gli eventi vengono attivati prima e Selecting dopo che il metodo dell'oggetto sottostante viene richiamato (fare clic per visualizzare l'immagine a dimensioni complete)

In questa esercitazione si esaminerà l'aggiunta di un metodo a DAL e BLL che accetta un singolo parametro Monthdi input , di tipo Integer e restituisce un EmployeesDataTable oggetto popolato con i dipendenti che hanno l'anniversario di assunzione nell'oggetto specificato Month. L'esempio imposta questo parametro a livello di codice in base al mese corrente, che mostra un elenco di "Anniversari dipendenti questo mese".

È possibile iniziare subito.

Passaggio 1: Aggiunta di un metodo aEmployeesTableAdapter

Per il primo esempio è necessario aggiungere un mezzo per recuperare i dipendenti che HireDate si sono verificati in un mese specificato. Per fornire questa funzionalità in conformità all'architettura, è necessario creare prima un metodo in EmployeesTableAdapter che esegue il mapping all'istruzione SQL appropriata. A questo scopo, iniziare aprendo Northwind Typed DataSet. Fare clic con il pulsante destro del mouse sull'etichetta EmployeesTableAdapter e scegliere Aggiungi query.

Aggiungere una nuova query a EmployeesTableAdapter

Figura 2: Aggiungere una nuova query all'oggetto EmployeesTableAdapter (Fare clic per visualizzare l'immagine full-size)

Scegliere di aggiungere un'istruzione SQL che restituisce righe. Quando si raggiunge l'istruzione Specificare un'istruzione SELECT , l'istruzione predefinita SELECT per l'oggetto EmployeesTableAdapter verrà già caricata. È sufficiente aggiungere nella WHERE clausola : WHERE DATEPART(m, HireDate) = @Month. DATEPART è una funzione T-SQL che restituisce una determinata parte di data di un datetime tipo. In questo caso si usa DATEPART per restituire il mese della HireDate colonna.

Restituisce solo le righe in cui la colonna HireDate è minore o uguale alla classe <span class=@HiredBeforeDate Parameter" />

Figura 3: restituire solo le righe in cui la colonna è minore o uguale al @HiredBeforeDate parametro (fare clic per visualizzare l'immagineHireDate a dimensioni complete)

Infine, modificare rispettivamente i nomi dei FillBy metodi FillByHiredDateMonth e GetDataBy in e GetEmployeesByHiredDateMonth.

Scegliere nomi di metodi più appropriati rispetto a FillBy e GetDataBy

Figura 4: scegliere nomi di metodi più appropriati rispetto FillBy a e GetDataBy (fare clic per visualizzare l'immagine a dimensioni complete)

Fare clic su Fine per completare la procedura guidata e tornare all'area di progettazione di DataSet. L'oggetto EmployeesTableAdapter dovrebbe ora includere un nuovo set di metodi per l'accesso ai dipendenti assunti in un mese specificato.

I nuovi metodi vengono visualizzati nell'area di progettazione di DataSet

Figura 5: I nuovi metodi vengono visualizzati nell'area di progettazione di DataSet (fare clic per visualizzare l'immagine full-size)

Passaggio 2: Aggiunta delGetEmployeesByHiredDateMonth(month)metodo al livello di logica di business

Dal momento che l'architettura dell'applicazione usa un livello separato per la logica di business e la logica di accesso ai dati, è necessario aggiungere un metodo al BLL che chiama il dal dal per recuperare i dipendenti assunti prima di una data specificata. Aprire il file e aggiungere il EmployeesBLL.vb metodo seguente:

<System.ComponentModel.DataObjectMethodAttribute _
    (System.ComponentModel.DataObjectMethodType.Select, False)> _
Public Function GetEmployeesByHiredDateMonth(ByVal month As Integer) _
    As Northwind.EmployeesDataTable
    Return Adapter.GetEmployeesByHiredDateMonth(month)
End Function

Come per gli altri metodi in questa classe, GetEmployeesByHiredDateMonth(month) viene semplicemente chiamato in DAL e restituisce i risultati.

Passaggio 3: Visualizzazione dei dipendenti il cui anniversario di assunzione è questo mese

Il nostro passaggio finale per questo esempio consiste nel visualizzare i dipendenti il cui anniversario di assunzione è questo mese. Iniziare aggiungendo gridView alla ProgrammaticParams.aspx pagina nella BasicReporting cartella e aggiungendo un nuovo OggettoDataSource come origine dati. Configurare ObjectDataSource per usare la EmployeesBLL classe con il SelectMethod set su GetEmployeesByHiredDateMonth(month).

Usare la classe EmployeesBLL

Figura 6: Usare la classe (fare clic per visualizzare l'immagineEmployeesBLL full-size)

Selezionare Dal metodo GetEmployeesByHiredDateMonth(month)

Figura 7: Selezionare dal metodo (Fare clic per visualizzare l'immagineGetEmployeesByHiredDateMonth(month) full-size)

La schermata finale chiede di specificare l'origine month del valore del parametro. Poiché questo valore verrà impostato a livello di codice, lasciare l'origine parametro impostata sull'opzione None predefinita e fare clic su Fine.

Lasciare l'origine dei parametri impostata su Nessuno

Figura 8: Lasciare l'origine parametri impostata su Nessuna (fare clic per visualizzare l'immagine a dimensioni complete)

Verrà creato un Parameter oggetto nell'insieme SelectParameters ObjectDataSource che non ha un valore specificato.

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
    OldValuesParameterFormatString="original_{0}"
    SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">
    <SelectParameters>
        <asp:Parameter Name="month" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

Per impostare questo valore a livello di Selecting codice, è necessario creare un gestore eventi per l'evento ObjectDataSource. A questo scopo, passare alla visualizzazione Progettazione e fare doppio clic su ObjectDataSource. In alternativa, selezionare ObjectDataSource, passare alla Finestra Proprietà e fare clic sull'icona del fulmine. Fare quindi doppio clic nella casella di testo accanto all'evento Selecting o digitare il nome del gestore eventi che si vuole usare. Come terza opzione, è possibile creare il gestore eventi selezionando ObjectDataSource e il relativo Selecting evento negli elenchi a discesa due nella parte superiore della classe code-behind della pagina.

Fare clic sull'icona Fulmine Bolt nella finestra Proprietà per elencare gli eventi di un controllo Web

Figura 9: fare clic sull'icona Fulmine Bolt nella finestra Proprietà per elencare gli eventi di un controllo Web

Tutti e tre gli approcci aggiungono un nuovo gestore eventi per l'evento Selecting ObjectDataSource alla classe code-behind della pagina. In questo gestore eventi è possibile leggere e scrivere nei valori dei parametri usando , dove parameterName è il valore dell'attributo Name nel <asp:Parameter> tag (la InputParameters raccolta può anche essere indicizzata in modo ordinale, come in e.InputParameters(index)).e.InputParameters(parameterName) Per impostare il month parametro sul mese corrente, aggiungere quanto segue al Selecting gestore eventi:

Protected Sub ObjectDataSource1_Selecting _
    (sender As Object, e As ObjectDataSourceSelectingEventArgs) _
        Handles ObjectDataSource1.Selecting
    e.InputParameters("month") = DateTime.Now.Month
End Sub

Quando si visita questa pagina tramite un browser si può notare che solo un dipendente è stato assunto questo mese (marzo) Laura Callahan, che è stata con l'azienda dal 1994.

I dipendenti i cui anniversari questo mese vengono visualizzati

Figura 10: i dipendenti i cui anniversari questo mese vengono visualizzati (fare clic per visualizzare l'immagine full-size)

Riepilogo

Anche se i valori dei parametri di ObjectDataSource possono essere in genere impostati in modo dichiarativo, senza richiedere una riga di codice, è facile impostare i valori dei parametri a livello di codice. Tutto ciò che è necessario fare è creare un gestore eventi per l'evento ObjectDataSource, che viene generato prima che il metodo dell'oggetto Selecting sottostante venga richiamato e impostare manualmente i valori per uno o più parametri tramite la InputParameters raccolta.

Questa esercitazione conclude la sezione Creazione report di base. L'esercitazione successiva inizia la sezione Filtri e scenari di Master-Details, in cui verranno esaminate le tecniche per consentire al visitatore di filtrare i dati e eseguire il drill-down da un report master in un report dettagli.

Programmazione felice!

Informazioni sull'autore

Scott Mitchell, autore di sette libri ASP/ASP.NET e fondatore di 4GuysFromRolla.com, ha lavorato con le tecnologie Microsoft Web dal 1998. Scott lavora come consulente indipendente, allenatore e scrittore. Il suo ultimo libro è Sams Teach Yourself ASP.NET 2,0 in 24 Ore. Può essere raggiunto a mitchell@4GuysFromRolla.com. o tramite il suo blog, che può essere trovato in http://ScottOnWriting.NET.

Grazie speciali

Questa serie di esercitazioni è stata esaminata da molti revisori utili. Il revisore principale per questa esercitazione è stato Hilton Giesenow. Interessati a esaminare i prossimi articoli MSDN? In tal caso, lasciami una riga in mitchell@4GuysFromRolla.com.