Datagrid éditable & dropdownlist [Résolu]

Signaler
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
-
Messages postés
14
Date d'inscription
jeudi 12 octobre 2000
Statut
Membre
Dernière intervention
29 janvier 2017
-
Bonjour,



j'ai un petit problème avec un datagrid éditable.








<FooterTemplate>





'>



<EditItemTemplate>



</EditItemTemplate>

</FooterTemplate><EditItemTemplate></EditItemTemplate>



Lorsque j'édite ma grille, je voudrais que la dropdownlist prenne par défaut

la valeur de l'ItemTemplate, sachant que je remplis ma dropdownlist dans l'evenement Itemdatabound.



public void ItemsGrid_ItemDataBound(object sender, DataGridItemEventArgs e)

{

if( e.Item.ItemType == ListItemType.EditItem )



Comment faire ?



Cab

7 réponses

Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
Bien vu Cyril,



dans l'ItemDataBound, tu peux faire un:



DataBinder.Eval(e.Item.DataItem, "le_champ_qui_va_bien"));



et ça te donne bien la valeur de que tu cherches



Cab
Messages postés
87
Date d'inscription
lundi 22 avril 2002
Statut
Membre
Dernière intervention
12 octobre 2006

essaies :
Label lab = (Label)e.Item.cells[0].FindControl("lblEtat");
if(lab!=null){
//boucle d'initialisation de ta DDL
//et dans la boucle
if(lab.Text == items.Value){
items.Selected = true;
}
}

Voilà, j'espère que c'est clair!
items représente un ListItem de la DDL
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
Il y a un petit problème:



Label lab = (Label)e.Item.cells[0].FindControl("lblEtat");



Tu n'y a pas accès dans l'évenement ItemDataBound puisqu'il n'existe plus.

Mais par contre, tu l'as dans l'évèment EditHandler.



Alors que pour le remplissage des ddl, c'est l'inverse !

Tu peux les utiliser dans le databound mais pas dans l'edit...



Le problème est comment faire pour "envoyer" le lab.Text dans l'ItemDataBound, proprement...



Tu vois le truc ?



Cab
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
Je suis pas sur d'avoir tout a fait saisi le problème mais pourquoi pas un request.form() ?

seul truc compliqué ca va etre pour trouver le ClientID du controle mais si t'as accés à la ligne, tu peux peut etre faire un e.items.findControl("drop").ClientID ou alors il faut que tu reconstruise le clientID tu auras accés au clientID du datagrid, donc en analysant la construction de l'id de ton drop dans l'html tu devrais pouvoir t'en tirer.


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
100
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
27 janvier 2006
1
Merci d'avoir répondu Cyril,



je crois comprendre ce que tu veux me dire.



Par exemple, un label qui s'appelle lblNomact devient dans la source



ItemsGrid__ctl3_lblNomact....



Je vais étudier ça avec le request.form()



Merci



Cab
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
arf, avec un label ce sera pas possible, les request.form fonctionneront qu'avec des formulaire (textbox / drop / etc... )

en relisant la question : tu affiches le drop dans le databound, si tu fouilles dans e il me semble bien que tu dois avoir accés à l'object container donc tu pourras recuperer Container.dataitem(truc)

fouilles dans e en debug pour voir ce que tu as ! tu devrais le trouver.


<HR>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
Messages postés
14
Date d'inscription
jeudi 12 octobre 2000
Statut
Membre
Dernière intervention
29 janvier 2017

J'ai le meme probleme.


J'ai un datagrid avec un dropdown dans une template colonne sur le edit.


Lorsque je clique sur edit je souhaiterais que ma dropdown se positionne sur la valeur d'un objet par exemple user.IdUser. Je n'y arrive pas. si kk1 peut m'aider.


Patrice