FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 22 septembre 2007 

 
OuvrirSommaireTravailler avec des donnéesLiaison de données (Data Binding)

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().

Créé le 20 septembre 2009  par nico-pyright(c)

On utilise le scriptlet d'expressions liées (#), par exemple :

 
Sélectionnez

<div>
    <%#Prenom %>
</div>

Avec par exemple une propriété de la page :

 
Sélectionnez

public string Prenom
{
	get { return "Nico"; }
}

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 :

 
Sélectionnez

protected override void OnLoad(EventArgs e)
{
	Page.DataBind();
	base.OnLoad(e);
}

On peut également l'utiliser dans les attributs d'un contrôle, par exemple :

 
Sélectionnez

<asp:Label runat="server" Text="<%#Prenom %>" ID="leLabel"/> 

Cette fois-ci, on pourra simplement se contenter d'appeler la méthode DataBind du contrôle concerné :

 
Sélectionnez

protected override void OnLoad(EventArgs e)
{
	leLabel.DataBind();
	base.OnLoad(e);
}
Créé le 20 septembre 2009  par nico-pyright(c)

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) :

 
Sélectionnez

<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 :

binding.xml
Sélectionnez

<?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 :

 
Sélectionnez

namespace WebApplication1
{
    public class TestObject
    {
        public int[] GetValue()
        {
            return new[] { 1, 2, 3, 4 };
        }
    }
}

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.

Créé le 20 septembre 2009  par nico-pyright(c)

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 :

 
Sélectionnez

<asp:DropDownList ID="DropDownList1" runat="server" DataSource="<%#new[] { 1, 2, 3, 4} %>"/>

Ou depuis le code-behind :

 
Sélectionnez

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.

Créé le 20 septembre 2009  par nico-pyright(c)
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.