Académique Documents
Professionnel Documents
Culture Documents
Lab04
But du Lab
Le but de ce Lab est de facilement manipuler les données à travers les contrôles Web
serveur fournis à l’aide d’ADO.NET.
- Ajouter dans le code de la page une méthode appelée « FillDataList() » qui va lier
la DataList à une base de données. Dans cet exemple, nous utiliserons la table
« authors » de la base de données « pubs » du serveur SQL local.
Page 1 sur 7
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
- Paramétrer la DataList afin d’afficher les données. Pour cela, dans le code HTML de la
page, ajouter un « ItemTemplate » entre les balises ouvrantes et fermantes du contrôle
DataList comme montré ci-dessous.
<ItemTemplate>
<table bgcolor="#f0f0f0" width="100%">
<tr bgcolor="#000000">
<td colspan="2">
<asp:Label Font-Bold="True" ForeColor="#ffffff"
text='<%#Databinder.Eval(Container.DataItem, "au_id")%>' Runat="server"
ID="Label1"/>
</td>
</tr>
<tr>
<td>Prénom :</td>
<td>
<%#Databinder.Eval(Container.DataItem, "au_fname")%>
</td>
</tr>
<tr>
<td>Nom :</td>
<td>
<%#Databinder.Eval(Container.DataItem, "au_lname")%>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button CommandName="Edit" Text="Edition"
Runat="server" ID="Button1"/>
</td>
</tr>
</table>
</ItemTemplate>
- Un ItemTemplate est un modèle qui est utilisé pour l'affichage de chaque élément
de la liste retournée par la requête SQL. Ce modèle va afficher les données de la
manière suivante :
o Chaque élément de la liste est affiché sous forme de tableau.
o L'identifiant de l'auteur est affiché dans un Label.
o Le nom de l'auteur est rendu en tant que texte.
o Un bouton est ajouté à ce modèle afin de passer en mode "Edition".
Page 2 sur 7
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
<EditItemTemplate>
<table bgcolor="#f0f0f0" width="100%">
<tr bgcolor="#000000">
<td colspan="2">
<asp:Label id="lblId" Font-Bold="True"
ForeColor="#ffffff" text='<%#Databinder.Eval(Container.DataItem, "au_id")
%>' Runat="server" />
</td>
</tr>
<tr>
<td>Prénom :</td>
<td>
<input type="text" id="txtFirst" value='<
%#Databinder.Eval(Container.DataItem, "au_fname")%>' runat="server"
NAME="txtFirst"/>
</td>
</tr>
<tr>
<td>Nom :</td>
<td>
<input type="text" id="txtLast" value='<
%#Databinder.Eval(Container.DataItem, "au_lname")%>' runat="server"
NAME="txtLast"/>
</td>
Page 3 sur 7
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
</tr>
<tr>
<td colspan="2">
<asp:Button CommandName="Update" Text="Mettre à jour"
Runat="server" ID="Button2"/>
<asp:Button CommandName="Cancel" Text="Annuler"
Runat="server" ID="Button3"/>
</td>
</tr>
</table>
</EditItemTemplate>
Page 4 sur 7
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
SqlConnection("server=(local);database=pubs;user id=sa;password=
saPassword")
sql = "update authors set au_fname='" & _first & "', "
sql = sql & "au_lname='" & _last & "' where au_id='" & _id & "'"
cnn.Open()
cmd.ExecuteNonQuery()
cnn.Close()
End Sub
DataList1.EditItemIndex = -1
fillDataList()
End Sub
- Tester la mise à jour des données : Modifier le nom ou le prénom d'un auteur et
cliquez sur le bouton « Mettre à jour ». Observer que la modification a été prise
en compte et que la liste affiche maintenant les auteurs avec la valeur saisie.
- Il ne reste plus qu'à gérer le clic sur le bouton « Annuler ». Pour cela, écrire le
gestionnaire d'événement « CancelCommand » du contrôle DataList.
- Dans ce gestionnaire, sortir du mode édition en précisant -1 comme valeur de
EditItemIndex du contrôle DataList, puis réafficher la liste.
Page 5 sur 7
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
Page 6 sur 7
Labs ASP.NET v1.1 Aurélien Norie & Sébastien Bovo [Microsoft]
MyConnection = New
SqlConnection("server=(local);database=northwind;user id=sa;password=
saPassword")
MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure
MyCommand.SelectCommand.Parameters.Add(New
SqlParameter("@Beginning_Date", SqlDbType.DateTime))
MyCommand.SelectCommand.Parameters("@Beginning_Date").Value =
Calendar1.SelectedDate
MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@Ending_Date",
SqlDbType.DateTime))
MyCommand.SelectCommand.Parameters("@Ending_Date").Value =
Calendar2.SelectedDate
DS = New DataSet
MyCommand.Fill(DS, "Sales")
DataGrid1.DataSource = DS.Tables("Sales").DefaultView
DataGrid1.DataBind()
End Sub
Page 7 sur 7