Você está na página 1de 17

TP02 : Mise jour

Partie 1 : Mise jour de la table


PRODUIT
Dans cet exercice, vous allez crer des pages Web pour mettre jour les tables
catgorie et produits dune base de donnes. Vous utiliserez diffrents scnarios
de mise jour, savoir :

Cration dune page de mise jour base sur un contrle


DetailsView
Mise
laide
du une
contrle
GridView
Mise jour
jour
avec
page
de recherche, une

une page
page
dajout
de
et
Vous utiliserez une base de donnes qui comprend deux tables dont voici le
schma :

1. Crer un nouveau site Web ASP.NET


2. Ajoutez votre base de donnes au dossier App_Data
3. Ajouter un dossier App_Code votre site
4. Dans le dossier App_Code, ajouter un fichier de Classes LINQ to
SQL , nommez-le
bd.dbml
5. Glissez les deux tables sur la page du concepteur du fichier db.dbml
. Cette opration permet de crer une classe pour chaque table ainsi
quune classe qui assure tous les accs physiques la base de donnes

GAHI SAID

Premier scnario : mise jour avec DetailsView


Dans ce scnario, Vous allez crer une seule page pour mettre jour les
catgories.
1. Ajouter une nouvelle page et nommez-la categories.aspx
2. Glissez un contrle LinqDataSource sur cette page et configurez-le sur la
classe Categorie.
Activez linsertion, la suppression et la mise jour
3. Glissez un contrle DetailsView et configurez sa source de donnes sur le
contrle LinqDataSource prcdent. Activez la pagination, linsertion,
la modification et la suppression.

GAHI SAID

Deuxime scnario : mise jour avec


GridView
Vous allez utiliser un contrle GridView pour aficher la liste des catgories et
permettre leur mise jour. Vous constaterez que la grille permet deux
oprations de mise jour : modification et suppression. Linsertion dune
nouvelle catgorie doit se faire sur un contrle DetailsView
1. Crez une nouvelle page et nommez-la categoriesliste.aspx
2. Glissez un contrle LinqDataSource et configurez-le sur la classe
Categorie. Activez
linsertion, la suppression et la mise jour
3. Glissez un contrle GridView et dfinissez sa source de
donnes sur le contrle
LinqDataSource prcdent. Activez la pagination, la suppression et la
modification

4. Linsertion dune nouvelle catgorie sera assure dans une page


indpendante :
a. Crer une nouvelle page et nommez-la ajoutCategorie.aspx
b. Glisser un contrle LinqDataSource et configurez-le sur la classe
Categorie. Activez
uniquement linsertion.
c. Glissez un contrle DetailsView et dfinissez sa source de donnes
sur le contrle LinqDataSource prcdent. Activez linsertion et
rglez la proprit Default mode sur la valeur Insert .

GAHI SAID

d.

Sur la page categoriesListe.aspx , ajoutez un contrle


HyperLink qui pointe sur la nouvelle page.
e. Pour grer les exceptions lies linsertion dune catgorie, ajouter
un label la page
ajoutCategorie.aspx et nommez-le lblMessage. Ajouter le
code suivant :

GAHI SAID

Protected Sub DetailsView1_ItemInserted(ByVal sender As


Object, ByVal e As
System.Web.UI.WebControls.DetailsViewInsertedEventArgs)
Handles DetailsView1.ItemInserted
If Not e.Exception Is Nothing Then
lblMessage.text = "Erreur : " + e.Exception.Message
e.ExceptionHandled = True
End If
End Sub

GAHI SAID

Troisime scnario : Mise jour avec recherche


Dans ce scnario, vous allez programmez la mise jour des produits. La
modification ou la suppression dun produit sera prcde dune recherche.

Page dajout dun produit


1. Ajouter une nouvelle page nomme AjoutProduit.aspx
2. Glissez-y un contrle LinqDataSource et configurez-le sur la
classe Produit. Activez
uniquement linsertion
3. Glissez un contrle DetailsView et paramtrez sa source de
donnes sur le contrle
LinqDataSource prcdent. Activez linsertion et rglez la proprit
Default Mode sur
Insert .
4. Convertissez tous les champs en champs templateField
5. Supprimez tous les contrles template sauf ceux de linsertion
6. Formatez et ajuster la prsentation des lments du formulaire. Ajuster la
taille des zones de texte notamment.
7. Remplacez la zone de texte du code catgorie par un DroDownList. Pour
cela :
a. Supprimer la zone de texte du code
catgorie
b.
Ajouter un contrle LinqDataSource nomm LinqCategorie et
configurez-le sur la classe Categorie
c. Ajouter un contrle DropDownList. Cliquer sur Modifier les
DataBindings et slectionnez les champs codec puis
cliquer sur Choisissez la source de donnes , slectionnez
LinqCategorie , dans la premire zone slectionnez
nomc et dans la deuxime
codec
8. Ajoutez un label nomm lblMessage qui servira pour aficher les
messages aprs
linsertion dun produit.
7

GAHI SAID

9.

Cliquez deux fois sur le contrle DetailsView et, dans la page de


code, slectionnez lvnement ItemInserted (cet vnement se
dclenche aprs lajout dune nouvelle ligne dans la table. Ajouter le code
suivant :
If Not e.Exception Is Nothing Then
lblMessage.Text = "Erreur : " & e.Exception.Message
e.ExceptionHandled = True
End If

Page de recherche
Cette page comprend une liste droulante qui permet de slectionner une
catgorie ainsi quune grille de la liste des produits de la catgorie slectionne.
La grille comprendra deux boutons : Modifier et Supprimer. Ces deux oprations
se poursuivront sur dautres
pages.
Une page nomme

modificationProduit.aspx
et
une page SuppressionProduit.aspx
1. Crez une nouvelle page nomme produitParCategorie.aspx
2. Insrez-y un contrle LinqDataSource nomm LinqCategorie et
configurez-le sur la classe
Categorie.
3. Ajoutez un contrle DropDownList nomm ddlCategorie et
attachez-le au contrle
LinqCategorie . Activez lAutoPostBack.
4.
Ajouter un contrle LinqDataSource nomm LinqProduit et
configurez-le sur la classe Produit. Slectionnez uniquement le code et
le nom du produit. Dans la clause WHERE ajouter la condition suivante

GAHI SAID

Cette condition signifie que la requte qui renvoie la liste des


produits retournera les
produits dont le codec est gal la valeur slectionne dans le contrle
ddlCategorie. Vous devez appuyez sur le bouton Ajouter pour crer la
condition.
5.

Ajoutez un contrle GridView et attachez-le au contrle LinqProduit.


Assurez-vous que la proprit DataKeyNames de la grille a comme
valeur codeP , si ce nest pas le cas afectez cette valeur
manuellement.
6. Dans le menu Tches GridView , cliquez sur loption Ajouter une
nouvelle colonne ,
compltez la fentre qui apparaitra comme suit :

GAHI SAID

7.

De la mme manire, ajoutez une colonne pour supprimer un produit.

1
0

GAHI SAID

Maintenant un click sur le lien Modifier permet dappeler la


page
modificationProduit.aspx et au mme temps la passation
paramtre nomm
code qui contient le code du produit slectionn. Idem pour
la suppression.

dun

Page de modification
Cette page souvrira aprs click sur le lien Modifier de la grille de la page de
recherche.
1. Crez une nouvelle page nomme modificationProduit.aspx
2. Insrez-y un contrle LinqDataSource nomm Linq1produit et
configurez le sur la classe
Produit. Ajouter la clause WHERE comme montr sur la
figure suivante :

Cette condition signifie que la requte de slection doit renvoyer le produit


dont le code est gal la valeur du paramtre code de
QueryString (QueryString est la chaine de la requte http qui a appele
la page). Appuyez sur le bouton Ajouter pour crer la condition. Activez la
mise jour.
3.
Ajouter un contrle
DetailsView et attachez-le au contrle
Linq1produit. Activez la modification et rglez la proprit Default
Mode la valeur Edit
4. Faites un double click sur le contrle DetailsView et, dans la page de code,
slectionnez lvnement ItemUpdated . Cet vnement se dclenche
aprs la modification dune ligne dans la table Produit. Ajoutez le code
suivant :
If e.Exception Is Nothing Then

1
1

GAHI SAID

Response.Redirect("produitsParCategorie.aspx")

Else

lblMessage.Text = "Erreur : " & e.Exception.Message


e.ExceptionHandled = True
End If

1
2

GAHI SAID

Page de suppression
Cette page constitue un moyen de contrle et de vrification de lintention de
lutilisateur.
1. Ajouter une page nomme suppressionProduit.aspx
2. Insrez-y un contrle LinqDataSource nomm Linq1Produit que vous
configurerez de la mme manire que vous lavez fait pour la modification.
Activez la suppression.
3. Ajoutez un contrle DetailsView et attachez-le au contrle
Linq1produit et activez la suppression.
4. Faites un double click sur le contrle DetailsView et slectionnez, sur
la page de code, lvnement ItemDeleted . Ajouter le code suivant :
If e.Exception Is Nothing Then
Response.Redirect("produitsParCategorie.aspx")
Else
lblMessage.Text = "Erreur : " & e.Exception.Message
e.ExceptionHandled = True
End If

1
3

GAHI SAID

Annexe : Arborescence de lapplication dvelopper

1
4

GAHI SAID

Partie 2 : Mise jour de la table


STAGIAIRE avec le code
Travail faire : Dvelopper le formulaire de mise jour de la table
stagiaire

using
using
using
using
using
using

System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.UI;
System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
}
private void affiche_stagiaire(STAGIAIRE s)
{
TextBox_numero.Text = s.NUMERO_STAGIAIRE.ToString();
TextBox_nom.Text = s.NOM_STAGIAIRE;

1
5

GAHI SAID

TextBox_prenom.Text = s.PRENOM_STAGIAIRE;
TextBox_sexe.Text = s.SEXE_STAGIAIRE.ToString();
TextBox_dn.Text = s.DATE_NAISSANCE.ToString();
}
protected void Button_premier_Click(object sender, EventArgs e)
{
STAGIAIRE s = (from t in DataBase.DB.STAGIAIRE select t).First();
affiche_stagiaire(s);
}
protected void Button_chercher_Click(object sender, EventArgs e)
{
try
{
int numero = int.Parse(TextBox_numero.Text);
STAGIAIRE s = (from t in DataBase.DB.STAGIAIRE where
t.NUMERO_STAGIAIRE == numero select t).Single();
affiche_stagiaire(s);
}
catch (Exception ex)
{
Label_message.Text = "Stagiaire introuvable \n" + ex.Message;
}
}
protected void Button_precedent_Click(object sender, EventArgs e)
{
try
{
int numero = int.Parse(TextBox_numero.Text);
int n = (from t in DataBase.DB.STAGIAIRE orderby
t.NUMERO_STAGIAIRE where t.NUMERO_STAGIAIRE < numero select
t.NUMERO_STAGIAIRE).Max();
STAGIAIRE s = (from t in DataBase.DB.STAGIAIRE where
t.NUMERO_STAGIAIRE == n select t).Single();
affiche_stagiaire(s);
}
catch (Exception ex)
{
Label_message.Text = "Stagiaire introuvable \n" + ex.Message;
}
}
protected void Button_suivant_Click(object sender, EventArgs e)
{
try
{
int numero = int.Parse(TextBox_numero.Text);
STAGIAIRE s = (from t in DataBase.DB.STAGIAIRE orderby
t.NUMERO_STAGIAIRE where t.NUMERO_STAGIAIRE > numero select t).First();
affiche_stagiaire(s);
}
catch (Exception ex)
{
Label_message.Text = "Stagiaire introuvable \n" + ex.Message;
}
}
protected void Button_dernier_Click(object sender, EventArgs e)
{
try
{

1
6

GAHI SAID

int n = (from t in DataBase.DB.STAGIAIRE orderby


t.NUMERO_STAGIAIRE select t.NUMERO_STAGIAIRE).Max();
STAGIAIRE s = (from t in DataBase.DB.STAGIAIRE where
t.NUMERO_STAGIAIRE == n select t).Single();
affiche_stagiaire(s);
}
catch (Exception ex)
{
Label_message.Text = "Stagiaire introuvable \n" + ex.Message;
}
}
protected void Button_nouveau_Click(object sender, EventArgs e)
{
TextBox_numero.Text = "";
TextBox_nom.Text = "";
TextBox_prenom.Text = "";
TextBox_sexe.Text = "";
TextBox_dn.Text = "";
}
protected void Button_ajouter_Click(object sender, EventArgs e)
{
try
{
STAGIAIRE s = new STAGIAIRE();
s.NUMERO_STAGIAIRE = int.Parse(TextBox_numero.Text);
s.NOM_STAGIAIRE = TextBox_nom.Text;
s.PRENOM_STAGIAIRE = TextBox_numero.Text;
s.SEXE_STAGIAIRE = TextBox_sexe.Text[0];
s.DATE_NAISSANCE = DateTime.Parse(TextBox_dn.Text);
DataBase.DB.STAGIAIRE.InsertOnSubmit(s);
DataBase.DB.SubmitChanges();
}
catch (Exception ex)
{
Label_message.Text = "Impossible d'ajouter ce stagiaires \n" +
ex.Message;
}
}
protected void Button_modifier_Click(object sender, EventArgs e)
{
try
{
int numero = int.Parse(TextBox_numero.Text);
STAGIAIRE s = (from t in DataBase.DB.STAGIAIRE where
t.NUMERO_STAGIAIRE == numero select t).Single();
s.NOM_STAGIAIRE = TextBox_nom.Text;
s.PRENOM_STAGIAIRE = TextBox_prenom.Text;
s.SEXE_STAGIAIRE = TextBox_sexe.Text[0];
s.DATE_NAISSANCE = DateTime.Parse(TextBox_dn.Text);
DataBase.DB.SubmitChanges();
}
catch (Exception ex)
{
Label_message.Text = "Stagiaire introuvable " + ex.Message;
}
}
protected void Button_supprimer_Click(object sender, EventArgs e)
{
try
{
int numero = int.Parse(TextBox_numero.Text);
STAGIAIRE s = (from t in DataBase.DB.STAGIAIRE where
t.NUMERO_STAGIAIRE == numero select t).Single();

1
7

GAHI SAID

DataBase.DB.STAGIAIRE.DeleteOnSubmit(s);
DataBase.DB.SubmitChanges();
}
catch (Exception ex)
{
Label_message.Text = "Impossible de supprimer ce stagiaire \n"
+ ex.Message;
}
}
}

1
8

GAHI SAID