Accès à un user control impossible [Résolu]

Signaler
Messages postés
16
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juin 2008
-
Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
1 décembre 2009
-
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

Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
1 décembre 2009

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
Messages postés
16
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
2 juin 2008
1
Merciiii Lassaad!
ça paraissait logique en plus ;-)

Merci
Sab
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
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
*/
Messages postés
148
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
1 décembre 2009

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