Si vous connaissez l'ASP classique, vous connaîtrez la syntaxe de liaison de données dans ASP.NET, même si les fonctions ne sont pas les mêmes. L'expression de la liaison de données est le code entre <%# et %> dans le fichier ASPX. Il permet aux données d'être liées à un contrôleur, ainsi qu'aux propriétés, expressions et résultats des appels de méthode sur la page d'être liés au contrôleur. Bien que cette fonctionnalité soit facile à utiliser, elle provoque parfois une confusion lorsqu'il s'agit de déterminer quel contenu peut être lié et s'il a été utilisé.
Éléments de liaison de données
Lorsque la méthode DataBind dans ASP.NET de la page est appelée, l'expression de liaison de données est liée aux propriétés, aux propriétés de contrôle serveur et aux sources de données dans ASP.NET. Vous pouvez placer une expression du côté numérique d’une paire valeur/valeur d’attribut lors de l’ouverture d’un onglet contrôlé par le serveur ou n’importe où sur la page. Toutes les expressions de liaison de données, quel que soit leur emplacement, sont entourées de caractères <%# et %>.
Lors de l'utilisation d'un contrôleur de données (Repeater, DataGrid, etc.), le paramètre de l'expression est généralement le nom de colonne de la source de données. Quoi qu’il en soit, n’importe quelle expression valide peut être utilisée à condition qu’elle renvoie une valeur. De même, la même syntaxe peut être utilisée pour les contrôles de liste externes. Cela inclut l'affichage des valeurs sur la page ou l'assemblage des propriétés du contrôleur.
Container.DataItem est un alias d'exécution pour DataItem pour un élément spécifique. Il mappe un seul élément d'une source de données, tel qu'une ligne d'une requête de données ou un seul élément d'un vecteur. Le type de données réel du DataItem est déterminé par la source de données. Par conséquent, lorsqu’il s’agit d’un vecteur d’entiers, le DataItem est également un entier.
La liste suivante passe en revue certaines situations de syntaxe VB.NET :
<%# Container.DataItem %>--renvoie un vecteur de chaîne
<%# Container.DataItem("expression") %>--renvoie un élément spécifique dans le champ du conteneur DataView
< %# Container.DataItem.PropertyName %>--renvoie la valeur de propriété d'une chaîne spécifique dans la source de données
<%# CStr(Container.DataItem.PropertyName) %>--renvoie la valeur de propriété et la convertit sous forme de chaîne
lorsque en utilisant C# , la syntaxe est légèrement différente. La liste suivante contient le code C# correspondant à la liste ci-dessus. Notez que la syntaxe de base est la même, mais il y a des changements dans la conversion des valeurs d'attribut et des types de données renvoyés.
<%# Container.DataItem %>
<%# ((DataRowView)Container.DataItem)["PropertyName"] %>
<%# ((ObjectType)Container.DataItem).PropertyName %>
<%# ((ObjectType)Container. DataItem).PropertyName.ToString() %>
La syntaxe est cohérente lorsque l'on agit sur les propriétés et les méthodes de la page. Tant qu'une valeur de chaîne est renvoyée, la syntaxe est exactement la même. La liste suivante donne un exemple :
<%# propertyName %>--Renvoie les valeurs de propriété au niveau de la page
<asp:ListBox id="lstValues" datasource='<%# propertyName %>' runat="server">-- Renvoie la même chose que les valeurs de propriété au niveau de la page (vecteurs, ensembles d'objets, etc.) liées au contrôleur de données
<%# (objectName.PropertyName) %> --Afficher les valeurs des propriétés d'objet au niveau de la page
<%# MethodName() %>--La méthode d'affichage de la page renvoie des valeurs
Utilisez la syntaxe suivante pour utiliser une seule valeur sur la page (valeurs renvoyées par les propriétés et les méthodes, etc.)
<%= Value %>
Le code C# du listing A illustre les données liaison dans un formulaire Web ASP.NET. Il sélectionne le nom et le numéro de téléphone de l'employé dans la table Employés de SQL Server Northwind. La valeur de la requête est affichée via le contrôleur ASP.NET Repeater. Les valeurs des colonnes sont insérées via la liaison de données. Le titre du formulaire de la table est assemblé via un appel de méthode. De plus, la propriété ItemIndex de Dataitem est utilisée pour afficher le nombre de lignes. La propriété ItemIndex commence à 0 et est incrémentée de 1 entre les affichages.
Le listing B contient le code VB.NET équivalent. La principale différence est que VB.NET utilise des parenthèses et C# utilise des crochets. Et le casting de lignes n'est pas nécessaire dans VB.NET.
Utiliser Contain.DataItem est un peu fastidieux, car vous devez à tout moment faire attention aux types de données et à la conversion des types de données. Microsoft fournit la classe DataBinder, qui peut simplifier davantage le développement.
L'utilisation de la
classe DataBinder DataBinder est expliquée en détail dans la documentation Microsoft (MSDN). Cette méthode permet au concepteur RAD de générer facilement une syntaxe de liaison de données analysées. Cette méthode peut également être utilisée dans les déclarations de page Web Forms pour simplifier le mappage d'un type à un autre.
Lorsque vous utilisez des valeurs de données dans une page ASP.NET, vous pouvez utiliser la méthode Eval de la classe DataBinder pour laisser .NET faire le gros du travail. La méthode Eval accepte l'objet Container.DataItem précédemment remplacé ; elle calcule les données détaillées pour chaque champ spécifié dans l'expression et les affiche. La syntaxe est la suivante :
DataBinder.Eval(Container.DataItem, "field name", "optional formatting")
Grâce à cette syntaxe, vous pouvez réécrire le premier exemple à l'aide de DataBinder.Eval. Voir le listing C pour son code C#. Le listing D contient du code équivalent à VB.NET.
DataBinder.Eval est très puissant pour transmettre le travail au système, mais sachez également que la surcharge de temps et de ressources nécessaire au système pour localiser les éléments et déterminer les types d'objets/données est élevée.
La liaison de donnéesavec options riches
rend le placement des données dans les pages ASP.NET relativement simple. Il existe de nombreuses options de liaison de données parmi lesquelles choisir, notamment : lier des données à un contrôleur et déterminer comment les afficher, ou choisir de lier des données à un contrôleur déclaré sur la page ASP.NET. En fin de compte, cela dépend de vos préférences, mais avoir beaucoup d’options est finalement une bonne chose.
Tony Patton a débuté sa carrière en tant que développeur de logiciels et est certifié Java, VB, Lotus et XML.