Partager via


Définition par programmation des valeurs des paramètres d’ObjectDataSource (VB)

par Scott Mitchell

Télécharger le PDF

Dans ce tutoriel, nous allons examiner l’ajout d’une méthode à notre DAL et BLL qui accepte un paramètre d’entrée unique et retourne des données. L’exemple définit ce paramètre par programmation.

Introduction

Comme nous l’avons vu dans le tutoriel précédent, un certain nombre d’options sont disponibles pour passer de manière déclarative des valeurs de paramètres aux méthodes de ObjectDataSource. Si la valeur du paramètre est codée en dur, provient d’un contrôle Web sur la page ou se trouve dans toute autre source lisible par un objet de source Parameter de données, par exemple, cette valeur peut être liée au paramètre d’entrée sans écrire de ligne de code.

Toutefois, il peut arriver que la valeur du paramètre provient d’une source non encore prise en compte par l’un des objets de source Parameter de données intégrés. Si notre site a pris en charge des comptes d’utilisateur, nous pouvons définir le paramètre en fonction de l’ID d’utilisateur du visiteur actuellement connecté. Vous devrez peut-être personnaliser la valeur du paramètre avant de l’envoyer à la méthode de l’objet sous-jacent ObjectDataSource.

Chaque fois que la méthode de Select ObjectDataSource est appelée, ObjectDataSource déclenche d’abord son événement Selecting. La méthode de l’objet sous-jacent ObjectDataSource est ensuite appelée. Une fois que l’événement sélectionné d’ObjectDataSource se déclenche (la figure 1 illustre cette séquence d’événements). Les valeurs de paramètre passées à la méthode de l’objet sous-jacent ObjectDataSource peuvent être définies ou personnalisées dans un gestionnaire d’événements pour l’événement Selecting .

Les événements sélectionnés et sélectionnés d’ObjectDataSource sont déclenchés avant et après l’appel de la méthode de son objet sous-jacent

Figure 1 : La méthode et les événements d’ObjectDataSource SelectedSelecting sont déclenchés avant et après l’appel de la méthode de l’objet sous-jacent (cliquer pour afficher l’image en taille réelle)

Dans ce tutoriel, nous allons examiner l’ajout d’une méthode à notre DAL et BLL qui accepte un paramètre Monthd’entrée unique , de type Integer et retourne un EmployeesDataTable objet rempli avec les employés qui ont leur anniversaire d’embauche dans le spécifié Month. Notre exemple définit ce paramètre par programmation en fonction du mois en cours, affichant la liste « Anniversaires des employés ce mois-ci ».

C’est parti !

Étape 1 : Ajout d’une méthode àEmployeesTableAdapter

Pour notre premier exemple, nous devons ajouter un moyen de récupérer les employés dont HireDate l’événement s’est produit au cours d’un mois spécifié. Pour fournir cette fonctionnalité conformément à notre architecture, nous devons d’abord créer une méthode qui EmployeesTableAdapter correspond à l’instruction SQL appropriée. Pour ce faire, commencez par ouvrir le DataSet de type Northwind. Cliquez avec le bouton droit sur l’étiquette EmployeesTableAdapter et choisissez Ajouter une requête.

Ajouter une nouvelle requête à EmployeesTableAdapter

Figure 2 : Ajouter une nouvelle requête au EmployeesTableAdapter (Cliquez pour afficher l’image de taille réelle)

Choisissez d’ajouter une instruction SQL qui retourne des lignes. Lorsque vous atteignez l’écran Spécifier une SELECT instruction, l’instruction par défaut SELECT pour le EmployeesTableAdapter est déjà chargée. Ajoutez simplement la WHERE clause : WHERE DATEPART(m, HireDate) = @Month. DATEPART est une fonction T-SQL qui retourne une partie de date particulière d’un datetime type ; dans ce cas, nous utilisons DATEPART pour renvoyer le mois de la HireDate colonne.

Retourne uniquement les lignes où la colonne HireDate est inférieure ou égale à l'<span class=@HiredBeforeDate Parameter » />

Figure 3 : Retourner uniquement les lignes où la HireDate colonne est inférieure ou égale au @HiredBeforeDate paramètre (cliquez pour afficher l’image en taille réelle)

Enfin, remplacez les noms de FillBy méthode et GetDataBy par FillByHiredDateMonth et GetEmployeesByHiredDateMonth, respectivement.

Choisissez des noms de méthode plus appropriés que FillBy et GetDataBy

Figure 4 : Choisissez des noms de méthode plus appropriés que FillBy et GetDataBy (Cliquez pour afficher l’image en taille réelle)

Cliquez sur Terminer pour terminer l’Assistant et revenir à l’aire de conception du DataSet. Le EmployeesTableAdapter doit maintenant inclure un nouvel ensemble de méthodes d’accès aux employés embauchés au cours d’un mois spécifié.

Les nouvelles méthodes apparaissent dans l’aire de conception du DataSet

Figure 5 : Les nouvelles méthodes apparaissent dans l’aire de conception du DataSet (cliquez pour afficher l’image en taille réelle)

Étape 2 : Ajout de laGetEmployeesByHiredDateMonth(month)méthode à la couche logique métier

Étant donné que notre architecture d’application utilise une couche distincte pour la logique métier et la logique d’accès aux données, nous devons ajouter une méthode à notre BLL qui appelle le DAL pour récupérer les employés embauchés avant une date spécifiée. Ouvrez le EmployeesBLL.vb fichier et ajoutez la méthode suivante :

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

Comme pour nos autres méthodes de cette classe, GetEmployeesByHiredDateMonth(month) il suffit d’appeler vers le bas dans le DAL et de retourner les résultats.

Étape 3 : affichage des employés dont l’anniversaire d’embauche est ce mois-ci

La dernière étape de cet exemple consiste à afficher les employés dont l’anniversaire d’embauche est ce mois-ci. Commencez par ajouter un GridView à la ProgrammaticParams.aspx page dans le BasicReporting dossier et ajoutez un nouvel ObjetDataSource comme source de données. Configurez ObjectDataSource pour utiliser la EmployeesBLL classe avec la SelectMethod valeur définie sur GetEmployeesByHiredDateMonth(month).

Utiliser la classe EmployeesBLL

Figure 6 : Utiliser la EmployeesBLL classe (cliquer pour afficher l’image en taille réelle)

Sélectionner à partir de la méthode GetEmployeesByHiredDateMonth(month)

Figure 7 : Sélectionner à partir de la GetEmployeesByHiredDateMonth(month) méthode (Cliquer pour afficher l’image en taille réelle)

L’écran final nous demande de fournir la month source de la valeur de paramètre. Étant donné que nous allons définir cette valeur par programmation, laissez la source du paramètre définie sur l’option Par défaut Aucun, puis cliquez sur Terminer.

Laissez la source de paramètre définie sur Aucun

Figure 8 : Laissez la source de paramètre définie sur Aucun (Cliquez pour afficher l’image en taille réelle)

Cela crée un Parameter objet dans la collection ObjectDataSource qui n’a SelectParameters pas de valeur spécifiée.

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

Pour définir cette valeur par programmation, nous devons créer un gestionnaire d’événements pour l’événement Selecting ObjectDataSource. Pour ce faire, accédez au mode Création et double-cliquez sur ObjectDataSource. Vous pouvez également sélectionner objectDataSource, accéder à la Fenêtre Propriétés, puis cliquer sur l’icône éclair. Ensuite, double-cliquez dans la zone de texte en regard de l’événement Selecting ou tapez le nom du gestionnaire d’événements que vous souhaitez utiliser. En troisième option, vous pouvez créer le gestionnaire d’événements en sélectionnant ObjectDataSource et son Selecting événement dans les deux listes déroulantes en haut de la classe code-behind de la page.

Cliquez sur l’icône Lightning Bolt dans la fenêtre Propriétés pour répertorier les événements d’un contrôle web

Figure 9 : Cliquez sur l’icône Lightning Bolt dans la fenêtre Propriétés pour répertorier les événements d’un contrôle Web

Les trois approches ajoutent un nouveau gestionnaire d’événements pour l’événement Selecting ObjectDataSource à la classe code-behind de la page. Dans ce gestionnaire d’événements, nous pouvons lire et écrire dans les valeurs de paramètre à l’aide e.InputParameters(parameterName)de , où parameterName est la valeur de l’attribut Name dans la <asp:Parameter> balise (la InputParameters collection peut également être indexée de manière orale, comme dans e.InputParameters(index)). Pour définir le paramètre sur month le mois en cours, ajoutez les éléments suivants au gestionnaire d’événements Selecting :

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

Lorsque vous visitez cette page via un navigateur, nous pouvons voir qu’un seul employé a été embauché ce mois-ci (mars) Laura Callahan, qui travaille avec l’entreprise depuis 1994.

Les employés dont les anniversaires de ce mois sont affichés

Figure 10 : Les employés dont les anniversaires de ce mois sont affichés (cliquez pour afficher l’image en taille réelle)

Résumé

Bien que les valeurs des paramètres d’ObjectDataSource puissent généralement être définies de manière déclarative, sans nécessiter de ligne de code, il est facile de définir les valeurs de paramètre par programmation. Il suffit de créer un gestionnaire d’événements pour l’événement ObjectDataSource, qui se Selecting déclenche avant l’appel de la méthode de l’objet sous-jacent, et de définir manuellement les valeurs d’un ou plusieurs paramètres via la InputParameters collection.

Ce tutoriel termine la section Rapports de base. Le tutoriel suivant démarre la section Filtrage et Master-Details scénarios, dans laquelle nous allons examiner les techniques permettant au visiteur de filtrer des données et d’explorer à partir d’un rapport master dans un rapport de détails.

Bonne programmation !

À propos de l’auteur

Scott Mitchell, auteur de sept livres ASP/ASP.NET et fondateur de 4GuysFromRolla.com, travaille avec les technologies Web Microsoft depuis 1998. Scott travaille comme consultant indépendant, formateur et écrivain. Son dernier livre est Sams Teach Yourself ASP.NET 2.0 in 24 Heures. Il est accessible à l’adressemitchell@4GuysFromRolla.com . ou via son blog, qui peut être trouvé à l’adresse http://ScottOnWriting.NET.

Un merci spécial à

Cette série de tutoriels a été examinée par de nombreux réviseurs utiles. Le réviseur principal de ce tutoriel était Hilton Giesenow. Vous souhaitez consulter mes prochains articles MSDN ? Si c’est le cas, déposez-moi une ligne à mitchell@4GuysFromRolla.com.