J'ai un ASP DropDownList qui est rempli lors de l'événement uniquement renseigné lorsque la page n'est pas postback)
Aidez-moi, s'il vous plaît
if (!IsPostBack)
{
List<Country> lCountries = new List<Country>();
List<CompanySchedule> lCompanySchedules = new List<CompanySchedule>();
this.Load_Countries(lCountries);
this.Load_Schedules(lCompanySchedules);
if (personnelRec == null)
{ personnelRec = new Personnel(); }
if (Request.QueryString["UA"] != null && Convert.ToInt32(Request.QueryString["UA"].ToString()) > 0)
{
userAccount.ID = Convert.ToInt32(Request.QueryString["UA"].ToString());
App_Database.Snapshift_Select_Helper.SNAPSHIFT_SELECT_PERSONNEL_APP_ACCOUNT(ref userAccount);
}
this.imgEmployeePicture.ImageUrl = "./images/Employees/nophoto.gif";
if (Request.QueryString["EI"] != null && Convert.ToInt32(Request.QueryString["EI"].ToString()) > 0)
{
this.Load_PersonnelRec(Convert.ToInt32(Request.QueryString["EI"].ToString()));
}
else
{
this.lblChangeDirectionHead.Enabled = false;
this.lblChangeDirections.Enabled = false;
this.lbSchedules.Disabled = true;
}
}
Le cycle de vie de la page effectue les opérations suivantes (ainsi que d'autres étapes sans rapport avec votre question):
OnInit
Page_Load
Vous devez activer ViewState pour qu'il puisse remplir la liste avant de "sélectionner" l'élément. Dans ce cas, assurez-vous que vous ne remplissez pas à nouveau dans▶Load et que vous perdez la valeur sélectionnée. Faites quelque chose comme if (!IsPostback) { // Populate }
Sinon, vous devez remplir la liste manuellement dans l'événement OnInit
à chaque demande de page. Page_Load
Est trop tard dans le cycle de vie, donc l'élément sélectionné est perdu.
Modifier:
DropDownList
doit également avoir des valeurs valides définies (distinctes du texte affiché dans le navigateur). Cela se fait via la propriété DataValueField
. Chaque valeur doit être unique, sinon seul le premier élément en double sera sélectionné. Si vous regardez la source HTML dans votre navigateur, vous devriez avoir:
<select>
<option value="unique_value1">Displayed text1</option>
<option value="unique_value2">Displayed text2</option>
</select>
Les valeurs uniques sont utilisées pour sélectionner le bon élément côté serveur.
Utilisez-vous une page maître? Si tel est le cas, n'oubliez pas de mettre EnableViewState sur true dans la page maître.