Affectation dynamique d'un identifiant LISTBOX ASP.NET C#

Signaler
Messages postés
66
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
6 mars 2008
-
Messages postés
66
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
6 mars 2008
-
Bonjour à tous,

Voilà j'utilise le code suivant pour afficher dynamiquement des list box dans une page aspx en fonction du nombre de CLT que j'ai dans ma base (sqlserver)

   

           <tr><td class="choicelistlabel"><%# DataBinder.Eval(Container.DataItem, "CLT_NAME") %> : </td>

                 <td>

                     " CssClass="choicelist"runat="server">

                 </td>
           
</tr>

    

J'ai une erreur sur la ligne en rouge : Parser Error Message: The server tag is not well formed.
J'ai essayé avec un banal select et ça fonctionne... mais là en passant par un textbox il est pas content...

Pourriez-vous m'aider svp?? Merci

Ou alors si vous connaissez une méthode pour afficher dynamiquement des listbox avec des infos provenant d'une BDD je suis preneur aussi lol...

Sinon j'avais essayé avec en mettant un panel dans mon aspx et en le remplissant dans le code-behind.. ça fonctionnait bien aussi... mais comme je dois encadré ma listbox avec un label et un bouton c'est la merde...

Enfin, merci pour la future...

++

8 réponses

Messages postés
21
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
12 octobre 2007

je vois pas ou est le probleme de la solution N°2....
moi elle me plait tres bien..

"Sinon j'avais essayé avec en mettant un
panel dans mon aspx et en le remplissant dans le code-behind.. ça
fonctionnait bien aussi... mais comme je dois encadré ma listbox avec
un label et un bouton c'est la merde..."
de toute facon tu dois parcourir ta colleciton... alors ou est le probleme en plus de rajouter la listbox dans le panel, de mettre avant un label contenant le champs que tu veux, et apres d'y ajouter un bouton!
Messages postés
66
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
6 mars 2008

Ben tout ça se trouve dans un tableau...
donc j'ai un truc du genre :

<td> LABEL</td><td>Panel (enfin listbox) </td> <td> BOUTON</td>

Mais TD sans dans la page aspx... donc faudrait que je fasse 3 panel.. c'est un peu lourd non??

Sinon j'avais pensé faire un controle user et l'incorporé... mais bon j'ai trouvé un méthode sur le net... il me fait pas d'erreur.. mais il ne m'affiche pas mon controle.. de plus avec cette méthode je ne sais pas comment affecté des ID dynamiquement au label, button et listbox...
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

pourquoi tu veux affecter des ID au controle ? le Repeater, enfin RepeaterItem, implémente INamingContainer tu peux donc avoir plusieurs fois le meme id de controle dans la page, l'interface INamingContainer va se charger de créer les ID uniques automatiquements

Si tu veux ensuite récuperer une ligne de ton repeater tu peux faire (DataList)rptTruc.Items[i].FindControl("dlTruc") ... généralement on utilise ca dans l'event ItemDataBound ou ItemCreated et on récuperer le RepeaterItem dans e.

Par contre pourquoi créer un Tableau avec un repeater ? C'est le role du gridview ! il est prévu pour ca, cela sera beaucoup moins compliqué d'utiliser les contrôles adéquats.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
66
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
6 mars 2008

Rebonjour,

Alors voilà la suite :
J'ai essayé avec ça :

<select multiple="multiple" class="choicelist" id="idCLT<%# DataBinder.Eval(Container.DataItem, "ID_CLT") %>">        </select>

Ca marche du tonnerre, j'ai donc en fonction des clients des IDs du genre, idCLT1, idCLT2,....
Ce qui me permet de les réutiliser facilement dans mes javascript.
Mais l'utilisation dans le codebehind en C# est plus compliquée en effet j'ai testé :

ListBox test = (ListBox)createCLT.FindControl("idCLT1");

Et test est null.... (Ca me parait normal, mais l'est-ce vraiment?)

Ma question est donc comment puis-je faire pour definir l'ID de mon choix en utilisant un contrôle ASP (ListBox) dans mon Repeater...
Exemple qui ne fonctionne pas :
" CssClass="choicelist" runat="server">

Ou alors auriez-vous une solution pour que je puisse manipuler mon select dans le CodeBehind.

Merci d'avoir pris le temps de me lire et surtout merci si vous avez une solution lol!

++
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

Pourquoi veux tu affecter des ID au controles ? (bis)

c'est pas comme ca que ca fonctionne. Pour récuperer une instance dans un Repeater il faut passer par un rpt.Items[0].FindControl("lecontrol");

et oui c'est normal qu'ASP.net ne reconnais pas ton contrôle puisqu'il n'est pas déclaré pour asp.net (runat=server)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
66
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
6 mars 2008

Je souhaite affecter des ID aux controles pour pouvoir les manipuler également en Javascript...

Je pense qu'avec ta méthode je pourrais m'en sortir en C# pour manipuler les controles crées.... quoique que ça serait plus simple pour moi d'avoir un ID de type ID_CLTx

Merci
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
ASP.net va générer des id automatiquement ... donc tu les auras aussi en js

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
Messages postés
66
Date d'inscription
mardi 18 juillet 2006
Statut
Membre
Dernière intervention
6 mars 2008

Oki merci j'ai bien compris, qu'il génére des ID automatiquement, je vais regarder ça de plus prés....

Mais est-ce qu'il est possible d'affecter des ID de mon choix?

Merci