2009-11-05 4 views
1

J'ai un contrôle formview, et sur l'événement ItemCreated, je suis "amorçage" certains des champs avec des valeurs par défaut.en utilisant FormView pour insérer

Toutefois, lorsque j'essaie d'utiliser le formview pour insérer, avant que l'événement ItemInserting soit appelé, pour une raison quelconque, il appelle d'abord ItemCreated. Il en résulte que les champs sont écrasés avec les valeurs par défaut juste avant l'insertion. Comment puis-je l'obtenir pour ne pas appeler l'événement ItemCreated avant l'événement ItemInserting?

Répondre

2

vous devez utiliser formview événement Databound au lieu de formview événement ItemCreated pour définir les valeurs, essayez comme

protected void frm_DataBound(object sender, EventArgs e) 
{ 
    if (frm.CurrentMode == FormViewMode.Edit)//whatever your mode here is. 
    { 
     TextBox txtYourTextBox = (TextBox)frm.FindControl("txtYourTextBox"); 
     txtYourTextBox.Text// you can set here your Default value 
    } 
} 

Vérifiez également ce fil d'émission similare FormView_Load being overwritten C# ASP.NET

0

Vous ne pouvez pas modifier l'ordre dans lequel les événements se déclenchent. Cependant, vous devriez probablement envelopper le code qui définit les valeurs par défaut à l'intérieur !IsPostBack afin qu'il ne réinitialise pas vos valeurs par exemple:

protected void FormView_ItemCreated(Object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
    //Set default values ... 
    } 
} 
+0

Cela ne marchera pas parce que quand je veux réellement frapper le ItemCreated, c'est sur une publication. –

+0

Dans ce cas, vous devrez peut-être ajouter une instruction If pour vérifier s'il existe une valeur avant de la définir. –

0

Essayez de vérifier la propriété CurrentMode de la vue formulaire.

void FormView_ItemCreated(object sender, EventArgs e) 
{ 
    if (FormView.CurrentMode != FormViewMode.Insert) 
    { 
     //Initialize your default values here 
    } 
} 
Questions connexes