Basculer entre mode insertion et mode édition dans un detailsView [Résolu]

coccolata 86 Messages postés samedi 31 janvier 2009Date d'inscription 26 mai 2010 Dernière intervention - 7 mars 2009 à 14:11 - Dernière réponse : RougailSaucisse 118 Messages postés lundi 16 février 2009Date d'inscription 6 décembre 2010 Dernière intervention
- 9 mars 2009 à 11:21
salut à tous,
j'ai un gridview, en selectionnant une ligne j'aurai les details chargés dans un detailsview
mon details view est par defaut en mode insertion je veux basculer en mode édition soit en selectionnant une ligne du gridview soit en cliquant sur annuler (dans le detailsview)
j'arrive pas a comprendre pourquoi la basculement entre les 2 modes tantot fonctionne et tantot ne fonctionne pas
en faisant le debug ligne par ligne ça passe par les methodes...
voici un bout de code:


protected
void DetailsView1_ItemCommand(
object sender,
DetailsViewCommandEventArgs e)


{


DetailsView1.DefaultMode = DetailsViewMode.Insert;


 





}


protected
void DetailsView1_ModeChanging(
object sender,
DetailsViewModeEventArgs e)


{






















DetailsView

dv = sender


as





DetailsView

;



 








if

(DetailsView1.CurrentMode ==


DetailsViewMode

.Insert){

dv.ChangeMode(



DetailsViewMode

.Edit);Calendar1.Enabled=



false

;

}



else


{


dv.ChangeMode(





DetailsViewMode

.Insert);Calendar1.Enabled=



true

;









}}
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
coccolata 86 Messages postés samedi 31 janvier 2009Date d'inscription 26 mai 2010 Dernière intervention - 9 mars 2009 à 10:26
3
Merci
ah si, j'ai oublié de mettre le nouveau code:

protected

void DetailsView1_ModeChanging(
object sender,
DetailsViewModeEventArgs e){

DetailsView dv = sender
as
DetailsView;

if (DetailsView1.CurrentMode ==
DetailsViewMode.Insert){

dv.ChangeMode(

DetailsViewMode.Edit);DetailsView1.DataBind();
Calendar1.Enabled false;DetailsView1.HeaderText

"Mode Edition";

 

}

else{

dv.ChangeMode(

DetailsViewMode.Insert);DetailsView1.DataBind();
Calendar1.Enabled true;DetailsView1.HeaderText

"Mode Insertion";

}

Merci coccolata 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de coccolata
RougailSaucisse 118 Messages postés lundi 16 février 2009Date d'inscription 6 décembre 2010 Dernière intervention - 9 mars 2009 à 05:11
0
Merci
Salut,

si tu as ton mode par defaut en "Insert" cela aura pour effet de retourner a "Insert" apres un update ou insert. Or toi tu souhaiterais etre en update apres un click sur annuler si je comprends bien.
Je te propose une méthode, je ne pense pas que c'est la meilleure et ca serait d'ailleurs bien que quelqu'un d'autre propose une methode peut-etre plus "propre" mais bon en attendant cela devrait fonctionner je pense (je n'ai pas mis les Calendar.Enabled et tout mais tu peux adapter cela facilement je pense:

//a la selction d'un item de ta gridview
protected void myGridview_SelectedIndexChanged(object sender, EventArgs e)
{
...
myDetailView.ChangeMode(DetailsViewMode.Edit);
myDetailView.DataBind();
}

//click sur un bouton de ta detailsview
protected void myDetailView_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
    if (e.CommandName == "Cancel")
   {
        myDetailView.DefaultMode = DetailsViewMode.Edit;
        myDetailView.ChangeMode(DetailsViewMode.Edit);
   }
}

//au changement de mode
protected void myDetailView_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
    myDetailView.ChangeMode(e.NewMode);
    dvDataBind(); //fonction de binding de ta detailsview
}

Voila, pas parfait je sais bien car il faudra en plus penser a rechanger le DefaultMode en Insert apres je ne sais quelle opération, mais bon si quelqu'un sait comme résoudre ceci plus proprement n'hesitez pas!
Commenter la réponse de RougailSaucisse
coccolata 86 Messages postés samedi 31 janvier 2009Date d'inscription 26 mai 2010 Dernière intervention - 9 mars 2009 à 10:00
0
Merci
merci bien pour ton aide, mais en attendant ta réponse j'ai  fait quelques réctifications sur ma méthode et tout fonctionne bien: en fait sur dans DetailsView1_ModeChanging
    j'ai oublié de faire detailsView1.Databind()
je pense que aussi la tienne fonctionne.mnt la basculement entre les 2 modes est correcte
seulement dans le mode insert j'ai encore la ligne du gridview sélectionnée, comment je dois faire pour la déselectionner?

merci encore une autre fois
Commenter la réponse de coccolata
RougailSaucisse 118 Messages postés lundi 16 février 2009Date d'inscription 6 décembre 2010 Dernière intervention - 9 mars 2009 à 10:56
0
Merci
ok très bien alors :)

et euh si tu veux deselectionner la ligne de ta gridview je pense qu'il suffit de faire un gridview.SelectedIndex = -1 puis de rebind la gridview.
Commenter la réponse de RougailSaucisse
coccolata 86 Messages postés samedi 31 janvier 2009Date d'inscription 26 mai 2010 Dernière intervention - 9 mars 2009 à 11:09
0
Merci
j'ai testé :)
ça fonctionne, mais y a pas besoin de faire encore gridview1.Databind()
il suffit de de faire gridview.selectedindex=-1 et tout ça marche !(avec le databind le gridview disparait ;)  )
Commenter la réponse de coccolata
RougailSaucisse 118 Messages postés lundi 16 février 2009Date d'inscription 6 décembre 2010 Dernière intervention - 9 mars 2009 à 11:21
0
Merci
ok tant mieux alors (normal que ca disparaise, quand je disais databind c'etait de ta fonction de binding donc je parlais pas la methode DataBind de la gridview directement, car evidemment ton datasource n'est plus definie puisque tu le fais en codebehind dans le pageload).
Mais bon si cela fonctionne sans avoir a rebind alors tant mieux ^^
Commenter la réponse de RougailSaucisse

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.