Les modifications de DropDownList.SelectedValue (en tant que contrôle enfant dans un FormView) ne collent pas

StackOverflow https://stackoverflow.com/questions/311250

Question

D'accord, j'ai un FormView avec quelques contrôles enfants dans un InsertItemTemplate. L'un d'eux est une DropDownList, appelée DdlAssigned. Je le référence dans la méthode OnLoad de la page comme suit:

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

En gros, je ne fais que définir la valeur par défaut de DropDownList à l'utilisateur actuellement connecté.

Quoi qu'il en soit, lorsque la page a fini de charger la modification SelectedValue, elle n'est pas reflétée sur la page. J'ai parcouru OnLoad et je peux voir le changement reflété dans ma liste de surveillance, mais quand tout est dit et fait, rien n'est différent sur la page.

Était-ce utile?

La solution

Je l'ai compris. Je ne comprends toujours pas pourquoi cela ne fonctionne pas uniquement avec FormLoad, mais la modification de l'événement DataBound de FormView fait l'affaire.

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();
}

Donc, je suppose que la règle générale est que si vous rencontrez des problèmes pour modifier les contrôles lorsque vous utilisez la liaison de données, essayez de la modifier immédiatement après sa liaison.

Autres conseils

J'ai eu un problème avec les listes déroulantes et en faisant en sorte que la première valeur dise quelque chose comme, "Sélectionnez une valeur ...". mais sans en faire un élément sélectionnable réel, ni apparaître dans la liste déroulante. Je liais le ddl dans le chargement page_load et je devais m'assurer que je définissais le texte de la liste déroulante APRÈS qu'il ait été lié à des données. Vous avez accompli la même chose en l'ajoutant à votre section databound.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top