FAQ ASP.NET/VB.NET
FAQ ASP.NET/VB.NETConsultez toutes les FAQ
Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 16 juin 2021
Le databinding est une fonctionnalité qui permet d'associer une source de données à un contrôle web.
Le fait de "binder" (lier) ces données permettra au contrôle de les afficher automatiquement en évitant de devoir parcourir toutes les données et les renseigner une à une.
Le databinding se veut déclaratif plus que fait par programmation.
Certains contrôles web supportent le binding à une valeur (comme le TextBox), d'autres à plusieurs valeurs (comme une DropDownList).
Le binding se fait dans un seul sens, en appelant la méthode DataBind().
On utilise le scriptlet d'expressions liées (#), par exemple :
<div>
<%#Prenom %>
</div>
Avec par exemple une propriété de la page :
Public ReadOnly Property Prenom
(
) As String
Get
Return "Nico"
End Get
End Property
Notez qu'il ne faudra pas oublier d'appeler la méthode DataBind() de la page afin d'indiquer au framework ASP.NET d'effectuer le remplacement des expressions :
Protected Overloads Overrides Sub OnLoad
(
ByVal e As EventArgs)
Page.
DataBind
(
)
MyBase.
OnLoad
(
e)
End Sub
On peut également l'utiliser dans les attributs d'un contrôle, par exemple :
Cette fois-ci, on pourra simplement se contenter d'appeler la méthode DataBind du contrôle concerné :
Protected Overloads Overrides Sub OnLoad
(
ByVal e As EventArgs)
leLabel.
DataBind
(
)
MyBase.
OnLoad
(
e)
End Sub
Un Datasource est comme son nom l'indique : une source de données.
Il peut y en avoir de plusieurs types, on citera par exemple SqlDataSource, ObjectDataSource, XmlDataSource, etc ...
Pour procéder au binding de ces sources de données, on pourra par exemple procéder ainsi (exemple avec un XmlDataSource et un ObjectDataSource) :
<asp:
xmldatasource id
=
"xmlDataSource1"
runat
=
"server"
datafile
=
"binding.xml"
/>
<asp:
ObjectDataSource runat
=
"server"
ID
=
"objectDataSource1"
TypeName
=
"WebApplication1.TestObject"
SelectMethod
=
"GetValue"
/>
<asp:
DropDownList ID
=
"DropDownList1"
runat
=
"server"
DataSourceID
=
"xmlDataSource1"
DataTextField
=
"titre"
/>
<asp:
DropDownList ID
=
"DropDownList2"
runat
=
"server"
DataSourceID
=
"objectDataSource1"
/>
Notons que le contrôle xmlDataSource1 pointe sur un fichier xml, comme source de données :
<?xml version="1.0" encoding="utf-8" ?>
<bindings>
<binding
titre
=
"databind d'une valeur"
/>
<binding
titre
=
"databind de plusieurs valeurs avec un Datasource"
/>
<binding
titre
=
"databind de plusieurs valeurs"
/>
</bindings>
et que le contrôle objectDataSource1 utilise la méthode GetValue du type TestObject pour alimenter la source de données :
Namespace WebApplication1
Public Class TestObject
Public Function GetValue
(
) As Integer
(
)
Return New (
) {
1
,
2
,
3
,
4
}
End Function
End Class
End Namespace
Dans ces exemples, on va utiliser une DropDownList et la connecter à la source de données grâce à l'attribut DataSourceID du contrôle.
Notez qu'on précise l'attribut xml dans le cas du binding à la source xml grâce à DataTextField.
N'oubliez pas d'appeler les méthodes DataBind correspondantes ou celle de la Page.
Une autre façon de binder des valeurs à un contrôle, sans utiliser de contrôle de source de données, est de renseigner la propriété DataSource du contrôle avec un type implémentant IEnumerable ou sa version typée.
Cela peut se faire déclarativement ainsi :
<
asp:
DropDownList ID=
"DropDownList1"
runat=
"server"
DataSource=
"<%#new[] { 1, 2, 3, 4} %>"
/>
Ou depuis le code-behind :
DropDownList1.
DataSource =
New (
) {
1
,
2
,
3
,
4
}
Comme à chaque fois, n'oubliez pas d'appeler la méthode DataBind correspondante ou celle de la Page.