Domanda

Okay, ho un FormView con un paio di controlli figlio in un InsertItemTemplate. Uno di questi è un DropDownList, chiamato DdlAssigned. Lo faccio riferimento nel metodo OnLoad della Pagina in questo modo:

protected void Page_Load(object sender, EventArgs e)
{
    ((DropDownList)FrmAdd.FindControl("DdlAssigned")).SelectedValue =
          ((Guid)Membership.GetUser().ProviderUserKey).ToString();
}

Fondamentalmente sto solo impostando il valore predefinito di DropDownList per l'utente attualmente connesso.

Comunque, quando la pagina termina il caricamento della modifica SelectedValue non si riflette sulla pagina. Ho esaminato OnLoad e vedo il cambiamento riflesso nella mia lista di controllo, ma quando tutto è detto e fatto nulla è diverso sulla pagina.

È stato utile?

Soluzione

L'ho capito. Mi manca ancora esattamente perché non funziona solo su FormLoad, ma eseguire il cambiamento nell'evento DataBound di FormView fa il trucco.

protected void FrmAdd_DataBound(object sender, EventArgs e)
{
    // This is the same code as before, but done in the FormView's DataBound event.
    ((DropDownList)FrmAdd.Row.FindControl("DdlAssigned")).SelectedValue =
        ((Guid)Membership.GetUser().ProviderUserKey).ToString();
}

Quindi, immagino che la regola generale sia che se si riscontrano problemi nell'effettuare modifiche ai controlli quando si lavora con il databinding, provare a farli immediatamente dopo che è stato associato.

Altri suggerimenti

Ho avuto un problema con gli elenchi a discesa e facendo dire al primo valore qualcosa del tipo, " Seleziona un valore ... " ma senza renderlo un vero oggetto selezionabile, né apparire nell'elenco a discesa. Stavo vincolando il ddl nel page_load e devo assicurarmi di aver impostato il testo dell'elenco a discesa, DOPO che è stato associato ai dati. Hai realizzato la stessa cosa aggiungendola alla sezione del tuo database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top