Domanda

Ho un controllo formview, e l'evento ItemCreated, sto "priming" alcuni dei campi con valori di default.

Tuttavia, quando cerco di usare il formview per inserire, prima della manifestazione ItemInserting viene chiamato, per qualche ragione che definisce ItemCreated prima. Che i risultati nei campi di essere sovrascritto con i valori di default a destra prima l'inserto accada.

Come faccio a farlo di non chiamare l'evento ItemCreated prima dell'evento ItemInserting?

È stato utile?

Soluzione

è necessario utilizzare formview Databound evento invece di formview evento ItemCreated per impostare i valori, tenta come

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
    }
}

Controllare anche questa discussione del problema similare FormView_Load sovrascrittura C # ASP.NET

Altri suggerimenti

Non è possibile modificare l'ordine in cui gli eventi del fuoco. Tuttavia, probabilmente si dovrebbe avvolgere il codice che imposta i valori di default all'interno !IsPostBack in modo che esso non ripristina i valori per esempio:

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

Prova a controllare il CurrentMode proprietà della vista modulo.

void FormView_ItemCreated(object sender, EventArgs e)
{
    if (FormView.CurrentMode != FormViewMode.Insert)
    {
        //Initialize your default values here
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top