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

Signaler
Messages postés
86
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2010
-
RougailSaucisse
Messages postés
118
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 décembre 2010
-
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

;









}}

6 réponses

Messages postés
86
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2010

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";

}
Messages postés
118
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 décembre 2010
1
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!
Messages postés
86
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2010

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
Messages postés
118
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 décembre 2010
1
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.
Messages postés
86
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
26 mai 2010

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 ;)  )
Messages postés
118
Date d'inscription
lundi 16 février 2009
Statut
Membre
Dernière intervention
6 décembre 2010
1
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 ^^