OVH Cloud OVH Cloud

Pb passge parametres Datalist

23 réponses
Avatar
Rogério Altman
Bonjour à tous,

J'essaie de récupérer par un evenement les donneés d'une balise "Label"n
venant d'un datalist, en cliquant sur un imagebutton.
En faisant un findcontrol je n'y arrive pas ...:

mapage.aspx
--------------

<asp:DataList id="DataList1" runat="server" RepeatColumns="3"
RepeatDirection="Horizontal" OnPreRender="Page_Load">
<itemtemplate>
<asp:Image ID="Image1" runat="server" ImageUrl='<%#
DataBinder.Eval(Container.DataItem, "chemin_image") %>' /><br />
<asp:Label ID="Label1" runat="server" Text='<%#
DataBinder.Eval(Container.DataItem, "nom_image") %>' ></asp:Label><br />
<asp:ImageButton ID="ImageButton1" runat="server"
ImageUrl="~/images/icone-ajouter.gif" OnClick="ImageButton1_Click" />
</itemtemplate>


mapage.aspx.cs
----------------
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
string nom_image=
((Label)(Page.FindControl("DataList1").FindControl("Label1") )). Text ; //
JE SOUHAITE RECUPERER L'ITEM CLIQUé

SqlConnection myConnection = new
SqlConnection("server=localhost;database=zoom;Trusted_Connection=Yes");
myConnection.Open();

string chemin_image = "~/zoomimages/" + numero_zoom + @"/" +
Session["valeur"] + @"/BR/" + nom_image ;
SqlCommand myCommand = new SqlCommand("INSERT INTO panier_client
(nom_image)" +
" VALUES ('" + nom_image + "')", myConnection);
myCommand.ExecuteNonQuery();
}

Merci de vos conseils,
A+

10 réponses

1 2 3
Avatar
Gilles TOURREAU
Le Mon, 30 Jul 2007 16:45:51 +0200, Dolten Altgor a écrit:

Dans mon evenement, je cree une connexion à ma base et je lance une
requete
insert, comme ceci:



SqlConnection maconnexion = new
SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
maconnexion.Open();
SqlCommand macommande = new SqlCommand ("INSERTO INTO...", maconnexion)
macommande.ExecutennQuery();



OK, mais les données de ton DataList elles proviennent bien d'un SELECT
de
ta base ? Et tu le stock où ce résultat ?



Oui, dans le Page_Load de la page je fais une requete SQL avec un
sqldatadapter et un dataset, comme suit:

SqlConnection("server=localhost;database=mabdd; Trusted_Connection=Yes");
SqlDataAdapter macommande = new SqlDataAdapter ("SELECT...");
DataSet DS = new DataSet();
macommande.fill (DS, "images");






Donc votre e.Item.DataItem contient le DataRowView (un enregistrement) de
votre DataSet associé à l'Item en cours de création...

Il suffit pour récupérer une colonne de ce DataRowView de faire :

((DataRowView)(e.Item.DataRow)).Row["MaColonneDeMonDataTable"];

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Dolten Altgor
Mais là j'essaie d'y insérer des données en récupérant des données d'un
datalist.
En résumé, j'insère dans une table les données qui proviennent d'une autre
table, via un datalist.
Il me faut juste récupérer la valeur d'un champ <asp:label> et l'intégrer
dans ma requete insert et c'est là que ca ne marche pas:

Dans l'evenement DataList1_ItemCreated j'essaie de récupérer la valeur d'un
champ label:

Label nom_image = ((Label) e.Item.FindControl("Label1"));
string mavaleur = nom_image.Text;

Mais cela ne marche pas...
Pouf, je n'y comprends rien...
merci




"Gilles TOURREAU" a écrit dans le message de news:

Le Mon, 30 Jul 2007 16:45:51 +0200, Dolten Altgor a
écrit:

Dans mon evenement, je cree une connexion à ma base et je lance une
requete
insert, comme ceci:



SqlConnection maconnexion = new
SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
maconnexion.Open();
SqlCommand macommande = new SqlCommand ("INSERTO INTO...", maconnexion)
macommande.ExecutennQuery();



OK, mais les données de ton DataList elles proviennent bien d'un SELECT
de
ta base ? Et tu le stock où ce résultat ?



Oui, dans le Page_Load de la page je fais une requete SQL avec un
sqldatadapter et un dataset, comme suit:

SqlConnection("server=localhost;database=mabdd; Trusted_Connection=Yes");
SqlDataAdapter macommande = new SqlDataAdapter ("SELECT...");
DataSet DS = new DataSet();
macommande.fill (DS, "images");






Donc votre e.Item.DataItem contient le DataRowView (un enregistrement) de
votre DataSet associé à l'Item en cours de création...

Il suffit pour récupérer une colonne de ce DataRowView de faire :

((DataRowView)(e.Item.DataRow)).Row["MaColonneDeMonDataTable"];

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Avatar
Gilles TOURREAU
Le Mon, 30 Jul 2007 17:18:32 +0200, Dolten Altgor a écrit:

Mais là j'essaie d'y insérer des données en récupérant des données d'un
datalist.
En résumé, j'insère dans une table les données qui proviennent d'une
autre
table, via un datalist.
Il me faut juste récupérer la valeur d'un champ <asp:label> et l'intégrer
dans ma requete insert et c'est là que ca ne marche pas:

Dans l'evenement DataList1_ItemCreated j'essaie de récupérer la valeur
d'un
champ label:

Label nom_image = ((Label) e.Item.FindControl("Label1"));
string mavaleur = nom_image.Text;

Mais cela ne marche pas...
Pouf, je n'y comprends rien...
merci




"Gilles TOURREAU" a écrit dans le message de
news:

Le Mon, 30 Jul 2007 16:45:51 +0200, Dolten Altgor a
écrit:

Dans mon evenement, je cree une connexion à ma base et je lance une
requete
insert, comme ceci:



SqlConnection maconnexion = new
SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
maconnexion.Open();
SqlCommand macommande = new SqlCommand ("INSERTO INTO...",
maconnexion)
macommande.ExecutennQuery();



OK, mais les données de ton DataList elles proviennent bien d'un
SELECT
de
ta base ? Et tu le stock où ce résultat ?



Oui, dans le Page_Load de la page je fais une requete SQL avec un
sqldatadapter et un dataset, comme suit:

SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
SqlDataAdapter macommande = new SqlDataAdapter ("SELECT...");
DataSet DS = new DataSet();
macommande.fill (DS, "images");






Donc votre e.Item.DataItem contient le DataRowView (un enregistrement)
de
votre DataSet associé à l'Item en cours de création...

Il suffit pour récupérer une colonne de ce DataRowView de faire :

((DataRowView)(e.Item.DataRow)).Row["MaColonneDeMonDataTable"];

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr








Autant pour moi...

Essayez ceci : débugguer votre évenement et regardez le contenu de la
propriété : e.Item.Controls et regardez si votre contrôle (Label1) est
présent dans la collection !

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Rogério Altman
Bonjour,

Voilà donc ce que je fais pour vérifier:

///// le Label1 existe bel et bien présent, et son id après compilation
devient "DataList1_ctl00_Label1" /////

//// Mon DataList1 comporte les evenements suivants////
OnPreRender="Page_Load" OnItemCreated="DataList1_ItemCreated"

/// J'ai créé un Label2 sur la page pour vérification ///
protected void DataList1_ItemCreated(object sender, DataListItemEventArgs
e)
{
Label nom_image = ((Label )e.Item .FindControl("Label1")) ;
string valeur = nom_image.Text ;
Label2.Text = valeur;
}

Mais, Label2.Text ne retourne rien...

Au delà de la question, j'ai un gros doute concernant la conception même des
pages du site. Vaut-il mieux taper du code dans mon fichier aspx.cs ou faire
la même chose en mode design avec les outils disponibles dans la boîte à
outils?

Merci



"Gilles TOURREAU" a écrit dans le message de news:

Le Mon, 30 Jul 2007 17:18:32 +0200, Dolten Altgor a
écrit:

Mais là j'essaie d'y insérer des données en récupérant des données d'un
datalist.
En résumé, j'insère dans une table les données qui proviennent d'une
autre
table, via un datalist.
Il me faut juste récupérer la valeur d'un champ <asp:label> et l'intégrer
dans ma requete insert et c'est là que ca ne marche pas:

Dans l'evenement DataList1_ItemCreated j'essaie de récupérer la valeur
d'un
champ label:

Label nom_image = ((Label) e.Item.FindControl("Label1"));
string mavaleur = nom_image.Text;

Mais cela ne marche pas...
Pouf, je n'y comprends rien...
merci




"Gilles TOURREAU" a écrit dans le message de
news:

Le Mon, 30 Jul 2007 16:45:51 +0200, Dolten Altgor a
écrit:

Dans mon evenement, je cree une connexion à ma base et je lance une
requete
insert, comme ceci:



SqlConnection maconnexion = new
SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
maconnexion.Open();
SqlCommand macommande = new SqlCommand ("INSERTO INTO...",
maconnexion)
macommande.ExecutennQuery();



OK, mais les données de ton DataList elles proviennent bien d'un
SELECT
de
ta base ? Et tu le stock où ce résultat ?



Oui, dans le Page_Load de la page je fais une requete SQL avec un
sqldatadapter et un dataset, comme suit:

SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
SqlDataAdapter macommande = new SqlDataAdapter ("SELECT...");
DataSet DS = new DataSet();
macommande.fill (DS, "images");






Donc votre e.Item.DataItem contient le DataRowView (un enregistrement)
de
votre DataSet associé à l'Item en cours de création...

Il suffit pour récupérer une colonne de ce DataRowView de faire :

((DataRowView)(e.Item.DataRow)).Row["MaColonneDeMonDataTable"];

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr








Autant pour moi...

Essayez ceci : débugguer votre évenement et regardez le contenu de la
propriété : e.Item.Controls et regardez si votre contrôle (Label1) est
présent dans la collection !

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr



Avatar
Rogério Altman
Voila, je pense avoir trouvé avec commandargument:

<asp:ImageButton runat=server CommandArgument='<#
DataBinder.Eval(Container.DataItem, "champ") >' OnClick="ImageButton1_Click"
/>

Et pour récupérer:

public void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
Button bu = (Button) sender;
string argument = bu.CommandArgument;
}

"Rogério Altman" a écrit dans le message de news:

Bonjour,

Voilà donc ce que je fais pour vérifier:

///// le Label1 existe bel et bien présent, et son id après compilation
devient "DataList1_ctl00_Label1" /////

//// Mon DataList1 comporte les evenements suivants////
OnPreRender="Page_Load" OnItemCreated="DataList1_ItemCreated"

/// J'ai créé un Label2 sur la page pour vérification ///
protected void DataList1_ItemCreated(object sender, DataListItemEventArgs
e)
{
Label nom_image = ((Label )e.Item .FindControl("Label1")) ;
string valeur = nom_image.Text ;
Label2.Text = valeur;
}

Mais, Label2.Text ne retourne rien...

Au delà de la question, j'ai un gros doute concernant la conception même
des pages du site. Vaut-il mieux taper du code dans mon fichier aspx.cs ou
faire la même chose en mode design avec les outils disponibles dans la
boîte à outils?

Merci



"Gilles TOURREAU" a écrit dans le message de
news:
Le Mon, 30 Jul 2007 17:18:32 +0200, Dolten Altgor a
écrit:

Mais là j'essaie d'y insérer des données en récupérant des données d'un
datalist.
En résumé, j'insère dans une table les données qui proviennent d'une
autre
table, via un datalist.
Il me faut juste récupérer la valeur d'un champ <asp:label> et
l'intégrer
dans ma requete insert et c'est là que ca ne marche pas:

Dans l'evenement DataList1_ItemCreated j'essaie de récupérer la valeur
d'un
champ label:

Label nom_image = ((Label) e.Item.FindControl("Label1"));
string mavaleur = nom_image.Text;

Mais cela ne marche pas...
Pouf, je n'y comprends rien...
merci




"Gilles TOURREAU" a écrit dans le message de
news:

Le Mon, 30 Jul 2007 16:45:51 +0200, Dolten Altgor a
écrit:

Dans mon evenement, je cree une connexion à ma base et je lance une
requete
insert, comme ceci:



SqlConnection maconnexion = new
SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
maconnexion.Open();
SqlCommand macommande = new SqlCommand ("INSERTO INTO...",
maconnexion)
macommande.ExecutennQuery();



OK, mais les données de ton DataList elles proviennent bien d'un
SELECT
de
ta base ? Et tu le stock où ce résultat ?



Oui, dans le Page_Load de la page je fais une requete SQL avec un
sqldatadapter et un dataset, comme suit:

SqlConnection("server=localhost;database=mabdd;
Trusted_Connection=Yes");
SqlDataAdapter macommande = new SqlDataAdapter ("SELECT...");
DataSet DS = new DataSet();
macommande.fill (DS, "images");






Donc votre e.Item.DataItem contient le DataRowView (un enregistrement)
de
votre DataSet associé à l'Item en cours de création...

Il suffit pour récupérer une colonne de ce DataRowView de faire :

((DataRowView)(e.Item.DataRow)).Row["MaColonneDeMonDataTable"];

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr








Autant pour moi...

Essayez ceci : débugguer votre évenement et regardez le contenu de la
propriété : e.Item.Controls et regardez si votre contrôle (Label1) est
présent dans la collection !

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr








Avatar
Gilles TOURREAU
Le Tue, 31 Jul 2007 12:14:24 +0200, Rogério Altman a écrit:

Bonjour,

Voilà donc ce que je fais pour vérifier:

///// le Label1 existe bel et bien présent, et son id après compilation
devient "DataList1_ctl00_Label1" /////

//// Mon DataList1 comporte les evenements suivants////
OnPreRender="Page_Load" OnItemCreated="DataList1_ItemCreated"

/// J'ai créé un Label2 sur la page pour vérification ///
protected void DataList1_ItemCreated(object sender,
DataListItemEventArgs
e)
{
Label nom_image = ((Label )e.Item .FindControl("Label1")) ;
string valeur = nom_image.Text ;
Label2.Text = valeur;
}

Mais, Label2.Text ne retourne rien...

Au delà de la question, j'ai un gros doute concernant la conception même
des
pages du site. Vaut-il mieux taper du code dans mon fichier aspx.cs ou
faire
la même chose en mode design avec les outils disponibles dans la boîte à
outils?

Merci





Vu que tu n'as pas de NullReferenceException à la ligne :
"nom_image.Text", il a donc bien trouvé ton contrôle nom_image...

Maintenant si nom_image.Text ne possède pas de valeur, c'est que l'erreur
est ailleurs... Est-ce que la propriété Text de tes Label1 est bien
initialisé ?

---------------------

En ce qui concerne le choix du Mode Design et du code Behind, tout dépend
de l'organisation de ton développement...
Microsoft utilise ce procédé de séparation de code car on considère que
pour le développement d'une page Web, il y a 2 métiers différents :
L'Infographiste (Designer de la page) et le développeur (manipulation des
objets). Grosso-modo on considère qu'un développeur est nul en infographie
mais très bon en codage et inversement... ;-)

Dans ta page ASPX, seul le Designer doit travailler dessus (position des
contrôles, couleurs, mise en forme...etc).
Dans ton code behind "aspx.cs", seul le développeur doit travailler dessus
(afficher un contrôle particulier si l'utilisateur s'est login,
récupération des données dans la couche métier et formatage si
nécessaire...etc).

Pour bien faire, il faut éviter de placer du code "au style PHP" comme
ceci dans une page ASPX :
<% if (this.MaVariable == true) %>
<p>Bonjour !</p>
<% } else { %>
<p>Au revoir</p>
<% } %>

En effet l'infographiste n'as souvent aucune notion de programmation et il
incapable de modifier, le code C# précédent...
Tu dois donc t'arranger pour dire à l'infographiste :
"Voilà, il existe un contrôle Label qui s'appelle "Message" et qui
contiendra le message de bienvenue..."
L'infographiste se chargera donc de positionner et décorer ce contrôle
dans la page, toi en tant que développeur tu devras en C#, remplir ce
contrôle en fonction de ta variable...

D'expérience, ce procédé n'est pas souvent évident à mettre en place... Et
quand on est seul on ne pense pas à ce genre d'organisation...
Mais en procédant ainsi tu auras une maintenance du site assez facile...

J'espère t'avoir donné assez de lumière...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Rogério Altman
> Maintenant si nom_image.Text ne possède pas de valeur, c'est que l'erreur
est ailleurs... Est-ce que la propriété Text de tes Label1 est bien
initialisé ?



Comment le vérifier?

En ce qui concerne le choix du Mode Design et du code Behind, tout dépend
de l'organisation de ton développement...
Microsoft utilise ce procédé de séparation de code car on considère que
pour le développement d'une page Web, il y a 2 métiers différents :
L'Infographiste (Designer de la page) et le développeur (manipulation des
objets). Grosso-modo on considère qu'un développeur est nul en infographie
mais très bon en codage et inversement... ;-)

Dans ta page ASPX, seul le Designer doit travailler dessus (position des
contrôles, couleurs, mise en forme...etc).
Dans ton code behind "aspx.cs", seul le développeur doit travailler dessus
(afficher un contrôle particulier si l'utilisateur s'est login,
récupération des données dans la couche métier et formatage si
nécessaire...etc).

Pour bien faire, il faut éviter de placer du code "au style PHP" comme
ceci dans une page ASPX :
<% if (this.MaVariable == true) %>
<p>Bonjour !</p>
<% } else { %>
<p>Au revoir</p>
<% } %>

En effet l'infographiste n'as souvent aucune notion de programmation et il
incapable de modifier, le code C# précédent...
Tu dois donc t'arranger pour dire à l'infographiste :
"Voilà, il existe un contrôle Label qui s'appelle "Message" et qui
contiendra le message de bienvenue..."
L'infographiste se chargera donc de positionner et décorer ce contrôle
dans la page, toi en tant que développeur tu devras en C#, remplir ce
contrôle en fonction de ta variable...

D'expérience, ce procédé n'est pas souvent évident à mettre en place... Et
quand on est seul on ne pense pas à ce genre d'organisation...
Mais en procédant ainsi tu auras une maintenance du site assez facile...

J'espère t'avoir donné assez de lumière...



merci de toutes ces précisions, elles seront certainement très utiles...

autrement, ma question est de savoir si tout ce que je fais en tapant du
code directement peut être fait en mode design (creation de requete avec
passage de paremtres, etc, etc).

a+
Avatar
Gilles TOURREAU
Le Tue, 31 Jul 2007 14:00:59 +0200, Rogério Altman a écrit:

Maintenant si nom_image.Text ne possède pas de valeur, c'est que
l'erreur
est ailleurs... Est-ce que la propriété Text de tes Label1 est bien
initialisé ?



Comment le vérifier?



Tes valeurs du Label1 sont bien affichées sur la page Web ?


En ce qui concerne le choix du Mode Design et du code Behind, tout
dépend
de l'organisation de ton développement...
Microsoft utilise ce procédé de séparation de code car on considère que
pour le développement d'une page Web, il y a 2 métiers différents :
L'Infographiste (Designer de la page) et le développeur (manipulation
des
objets). Grosso-modo on considère qu'un développeur est nul en
infographie
mais très bon en codage et inversement... ;-)

Dans ta page ASPX, seul le Designer doit travailler dessus (position des
contrôles, couleurs, mise en forme...etc).
Dans ton code behind "aspx.cs", seul le développeur doit travailler
dessus
(afficher un contrôle particulier si l'utilisateur s'est login,
récupération des données dans la couche métier et formatage si
nécessaire...etc).

Pour bien faire, il faut éviter de placer du code "au style PHP" comme
ceci dans une page ASPX :
<% if (this.MaVariable == true) %>
<p>Bonjour !</p>
<% } else { %>
<p>Au revoir</p>
<% } %>

En effet l'infographiste n'as souvent aucune notion de programmation et
il
incapable de modifier, le code C# précédent...
Tu dois donc t'arranger pour dire à l'infographiste :
"Voilà, il existe un contrôle Label qui s'appelle "Message" et qui
contiendra le message de bienvenue..."
L'infographiste se chargera donc de positionner et décorer ce contrôle
dans la page, toi en tant que développeur tu devras en C#, remplir ce
contrôle en fonction de ta variable...

D'expérience, ce procédé n'est pas souvent évident à mettre en place...
Et
quand on est seul on ne pense pas à ce genre d'organisation...
Mais en procédant ainsi tu auras une maintenance du site assez facile...

J'espère t'avoir donné assez de lumière...



merci de toutes ces précisions, elles seront certainement très utiles...

autrement, ma question est de savoir si tout ce que je fais en tapant du
code directement peut être fait en mode design (creation de requete avec
passage de paremtres, etc, etc).



Oui il existe des objets pour çà (par ex SqlDataSource qui permettent
d'appeler une fonction particulière (en code behind) en lui passant des
paramètres (GET, POST,...etc))
Cependant cela ne respecte pas trop le concept que j'avais evoqué dans mon
POST précédent... (Par contre l'ObjectDataSource, représente plus le
concept évoqué précédemment).

L'utilisation de ces composants dépendent de ce que tu souhaite obtenir en
:
- vitesse de développement
- qualité du code
- qualité d'organisation
- modularité
...etc

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Dolten Altgor
"Gilles TOURREAU" a écrit dans le message de news:

Le Tue, 31 Jul 2007 14:00:59 +0200, Rogério Altman a écrit:

Maintenant si nom_image.Text ne possède pas de valeur, c'est que
l'erreur
est ailleurs... Est-ce que la propriété Text de tes Label1 est bien
initialisé ?



Comment le vérifier?



Tes valeurs du Label1 sont bien affichées sur la page Web ?



Oui, tout à fait, mais j'ai réussi finalement à faire passer les parametres
grace a "commandargument" (voir mon post de 12:48)

Oui il existe des objets pour çà (par ex SqlDataSource qui permettent
d'appeler une fonction particulière (en code behind) en lui passant des
paramètres (GET, POST,...etc))
Cependant cela ne respecte pas trop le concept que j'avais evoqué dans mon
POST précédent... (Par contre l'ObjectDataSource, représente plus le
concept évoqué précédemment).

L'utilisation de ces composants dépendent de ce que tu souhaite obtenir en
:
- vitesse de développement
- qualité du code
- qualité d'organisation
- modularité
...etc



Très bien , donc selon toi il vaut mieux travailler dans le code behind
plutôt que les objets en mode design...
Car pour manipuler les donner dans un formview, par exemple, j'ai trouvé
très pratique d'utiliser les objets disponibles dans la boîte à outils...
a+
Avatar
Gilles TOURREAU
Le Tue, 31 Jul 2007 16:58:08 +0200, Dolten Altgor a écrit:


"Gilles TOURREAU" a écrit dans le message de
news:

Le Tue, 31 Jul 2007 14:00:59 +0200, Rogério Altman a écrit:

Maintenant si nom_image.Text ne possède pas de valeur, c'est que
l'erreur
est ailleurs... Est-ce que la propriété Text de tes Label1 est bien
initialisé ?



Comment le vérifier?



Tes valeurs du Label1 sont bien affichées sur la page Web ?



Oui, tout à fait, mais j'ai réussi finalement à faire passer les
parametres
grace a "commandargument" (voir mon post de 12:48)

Oui il existe des objets pour çà (par ex SqlDataSource qui permettent
d'appeler une fonction particulière (en code behind) en lui passant des
paramètres (GET, POST,...etc))
Cependant cela ne respecte pas trop le concept que j'avais evoqué dans
mon
POST précédent... (Par contre l'ObjectDataSource, représente plus le
concept évoqué précédemment).

L'utilisation de ces composants dépendent de ce que tu souhaite obtenir
en
:
- vitesse de développement
- qualité du code
- qualité d'organisation
- modularité
...etc



Très bien , donc selon toi il vaut mieux travailler dans le code behind
plutôt que les objets en mode design...
Car pour manipuler les donner dans un formview, par exemple, j'ai trouvé
très pratique d'utiliser les objets disponibles dans la boîte à outils...
a+





Tout dépend de comment tu veux structurer tes pages...
C'est vrai que l'avantage du SqlDataSource, c'est le gain de temps énorme
à realiser les pages et de tout faire à la souris...
Cela évite beaucoup de code et de bug !

L'inconvénient d'un tel procédé c'est que (par exemple) tu ancres toutes
les requêtes SQL directement les pages ASP...
Tu n'as donc plus une architecture classique couches (Métier, Accès aux
données et IHM) ! Il suffit qu'un jour tu changes de SGBD (ou un renomage
de table par exemple) pour te rendre compte que c'est un vrai bazarre à
modifier (sur 5 pages ça va encore... Mais sur 50 c'est horrible)

Personellement, pour les développements ASP .NET, je (nous) utilise
uniquement l'ObjectDataSource car :
- il est possible avec celui-ci d'avoir un rendu visuel en Mode Design des
tes colonnes,...etc
- d'appeler des méthodes qui se chargeront de récupérer les données...
- de réduire un peu le codage en passant les paramètres des pages GET,
POST,...etc directement dans les méthodes sans avoir à les traiter dans le
Page_Load()
- On a des pages qui sont ancrés directement via la couche métier et non
via à un SGBD (ou à une source de données) quelconque !

Si tu veux utiliser l'objet ObjectDataSource je pourrais te donner
quelques conseils concernant l'organisation de ton code...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
1 2 3