Accès à un user control impossible

Résolu
cs_Sabine26 Messages postés 16 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 2 juin 2008 - 13 févr. 2008 à 11:45
lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009 - 16 févr. 2008 à 23:45
Bonjour,

Voilà j'ai un petit soucis d'accès à une DropDownList.
J'ai une Webform qui se nomme Sales_objectives et qui contient un tableau et une DDL. Une colonne du tableau représente une année, et je voudrais que dans mon tableau ne figure que les données de l'année sélectionnée dans la DDL.

Mon tableau est rempli via un ObjectDataSource avec une SelectMethod appelé "getListSales" qui elle est codée dans un .vb dans le répertoire App_Code.

Dans ce .vb figure une requete SQL qui sélectionne les champs nécessaires et à pour condition que la date YEAR soit = à DDL1.SelectedValue.

Hors DDL1 est considéré comme nouvel objet non déclaré.

DOnc la question que je me pose c'est comment faire communiquer les objets entre le .vb et le .aspx sachant qu ils ne sont pas dans le meme répertoire... j'ai essayé de mettre le .vb à la racine où se trouve le .aspx... mais sans succès... donc là je sais pas!!!

Merci pour votre aide

Sabine

4 réponses

lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009
13 févr. 2008 à 14:48
Je suis pas sur d'avoir saisi ta question, mais d'après ce que j'ai compris tu n'as qu'a passer la valeur de ton DDL lors de l'appel de la méthode "getListSales" que tu poura reccuperer dans ta requete SQL, un truc de ce genre quoi ....




protected



void
DDL1_SelectedIndexChanged(

object
sender,

EventArgs
e)
{
         getListSales(DDL1.SelectedValue);
}





public



void
getListSales(

string
Annee)
{


         string
SQL =

string
.Empty;         SQL "SELECT * FROM DB_ANNEE WHERE ANNEE '"
+ Annee +

"'"
;
}







----------------------------------------
X

x
X Enjoy & Get Connected XxX
3
cs_Sabine26 Messages postés 16 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 2 juin 2008 1
13 févr. 2008 à 14:58
Merciiii Lassaad!
ça paraissait logique en plus ;-)

Merci
Sab
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
16 févr. 2008 à 22:42
Salut,

2 petites remarques :

Sans tenir compte du problème de sécurité :
public void getListSales( string Annee)
{
         string SQL = string .Empty;         SQL "SELECT * FROM DB_ANNEE WHERE ANNEE '" + Annee + "'" ;
}

Ceci serait mieux :

public void getListSales( string Annee)
{         string SQL "SELECT * FROM DB_ANNEE WHERE ANNEE '" + Annee + "'" ;
}

Mis à part celà, regarder du côté des requetes paramétrées et de ce qu'on appelle l'injection SQL.
Tutos sur le sujet :
http://www.csharpfr.com/tutoriaux/COMMENT-FAIRE-REQUETE-PARAMETREE-DANS-BASE-DONNEE_710.aspx
http://www.csharpfr.com/tutoriaux/UTILISATION-REQUETES-PARAMETREES-AVEC-ADO-NET_709.aspx

/*
coq
MVP Visual C#
CoqBlog
*/
0
lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009
16 févr. 2008 à 23:45
Comme l'as dit le Coq, il ne faut pas oublier l'aspect sécurité du code nottamment contre SQL Injection.
On peut y remedier soit en faisant une fonction de ce style :

public
static
string FSqlString(
string Chaine)
{
      
return(Chaine.Trim().Replace(
"'",
"''"));
}

qu'on utilisera de la sorte :

public
void getListSales(
string Annee)
{
         //string SQL = string.Empty; -> ouai si on veux
         string SQL "SELECT * FROM DB_ANNEE WHERE ANNEE '" + FSqlString(Annee) +
"'";
}

Mais que je considère comme "barbare" c'est pourquoi je conseil vivement l'utilisation des requetes paramétrées.

Bon codage...
0
Rejoignez-nous