PeTeRsLaStAr
Messages postés158Date d'inscriptionsamedi 22 juin 2002StatutMembreDernière intervention27 juin 2015
-
5 févr. 2008 à 16:01
PeTeRsLaStAr
Messages postés158Date d'inscriptionsamedi 22 juin 2002StatutMembreDernière intervention27 juin 2015
-
7 févr. 2008 à 10:11
(le titre est un peu vague, mais je ne sais pas trop, comment résumer en une phrase mon problème...)
Voilà mon problème.
J'ai un tableau qui est géré dynamiquement (sur la colonne de droite, un bouton ajouter, ajoute dynamiquement une nouvelle ligne).
Dans chaque ligne, il y a une combo Box, chargée avec le contenu d'une web Methode.
Auparavant, j'appelais la webMethode à chaque création d'une nouvelle ligne pour gérer le contenu de ma web méthode (sachant que je ne peux pas Databinder avec mon dataset, car j'effectue des traitements sur ces données... à savoir reformatage, etc...).
La webMethode est devenue très couteuse en temps, et le chargement d'une nouvelle ligne est maintenant beaucoup trop long. il me faut donc une solution de rechange.
J'ai alors essayé au premier chargement de ma comboBox de stocker mes valeurs dans une varialbe statique de type "NameValueConfigurationCollection".
Cela donnait à peu près ça :
protected void LoadDropDownList(DropDownList DDLToFill)
{
if (!mbDDLHasBeenLoad)// Premier chargement dans la collection
{
m_Array_DDL_Liste_Products = new NameValueConfigurationCollection();
NameValueConfigurationElement MyDataToAdd;
DDLToFill.Items.Clear();
// Appel de la WM
MyWebServices MyWS = new MyWebServices;
DataSet MyDS = MyWS.GetData();
foreach (DataRow MyRow in MyDS.Rows)
{
ListItem MyItem = new ListItem(MyRow["Code"].ToString(), MyRow["Libelle"].ToString());
DDLToFill.Items.Add(MyItem);
MyDataToAdd= new NameValueConfigurationElement(MyRow["Code"].ToString(), MyRow["Libelle"].ToString());
m_MyCollection.Add(MyProductToAdd);
}
}
else // La collection a déjà été chrgée
{
DDLToFill.Items.Clear();
// Récupération de toutes les clés dans un tableau de string
string[] saAllKeyValues = m_MyCollection.AllKeys;
foreach (string sKey in saAllKeyValues)
{
DDLToFill.Items.Add(new ListItem(sKey, m_MyCollection[sKey].ToString()));
}
}
(J'edspère avoir été aussi clair que possible dans mon exemple...)
LE PROBLEME, est le suivant :
Dès que je modifie une DropDownList, après mon postBack, la valeur de ma DDL devient la même que la valeur de ma première DDL, chargée initialement...
Ma question vous l'avez compris : comment faire, pour que chaque DropDownList ait un comportement individuel ? Là j'ai l'impression que je dois faire une référence à ma DDL, et que du coup, toutes les DDL sont en fait liées à la première...
Merci pour vos réponses :)
Si vous avez des questions, n'hésitez pas...
****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
PeTeRsLaStAr
Messages postés158Date d'inscriptionsamedi 22 juin 2002StatutMembreDernière intervention27 juin 20151 7 févr. 2008 à 10:11
Merci pour ta réponse.
Le problème de cette solution (sauf s'il y a une feinte) c'est que je ne sais pas combien de lignes je dois avoir...
Du coup, je me vois mal créer 15 ou 20 DDL...
****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher