J'ai suivi l'article TRULLY Understanding ViewState (grand article btw) et remplir ma liste déroulante fonctionne très bien. J'ai même configuré un événement OnSelectedIndexChange qui se déclenche presque aussi bien.DropDownList OnSelectedIndexChange à 0e index sans ViewState
Le problème que j'ai trouvé est l'événement SelectedIndexChanged ne se déclenchera pas lors de la sélection de l'index 0e. Il fait tous les autres fois cependant.
Voici quelques code:
<asp:DropDownList runat="server" ID="DropDownList1" EnableViewState="false"
AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" />
protected override void OnInit(EventArgs e)
{
this.DropDownList1.DataTextField = "Text";
this.DropDownList1.DataValueField = "Value";
this.DropDownList1.DataSource = fillQueueDropDown();
this.DropDownList1.DataBind();
base.OnInit(e);
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
OnSelectedQueueChanged(e);
}
public void OnSelectedQueueChanged(EventArgs e)
{
// Do stuff.
}
public event EventHandler queueNamesChangedEvent;
public void OnSelectedQueueChanged(EventArgs e)
{
if (queueNamesChangedEvent != null)
queueNamesChangedEvent(this, e);
}
Je suppose que je peux faire un certain type de contrôle dans la méthode Page_Load:
if(ViewState["selectedIndexChangedFlag"] != 1)
// raise OnSelectedChange event
Ou est-il quelque chose que je peut configuration dans la méthode OnInit() où je reconfigure ces données chaque fois que je peux faire? Voyez, mon EventHander personnalisé déclenche un événement qui est attrapé par une page parent dans laquelle ce contrôle réside, de sorte que le parent puisse prendre une certaine action en utilisant la nouvelle valeur sélectionnée. Et cela fonctionne actuellement pour tous les cas où l'index sélectionné> 0.
Je crée une propriété dans ce contrôle qui contient l'index sélectionné le plus récemment, auquel cas ma page parente peut agir sur cette valeur de propriété sur chaque Page_Load. .. ne sais pas.
Ouvert aux suggestions. Ou comment forcer cet événement SelectedIndexChanged à se déclencher pour cette sélection d'index 0e.
+1 Très bien - c'est une excellente façon de le faire sans ViewState! Désolé, je n'ai pas remarqué que vous ne vouliez pas de ViewState - je vais lire la question plus attentivement la prochaine fois. –
Merci pour votre solution initiale, cela a vraiment aidé à faire la lumière sur l'ordre des choses. Je suppose que je ne connais pas le cycle de vie de la page asp.net aussi bien que je pensais. –