ASP.NET DropDownList ne conserve pas l'élément sélectionné en publication
J'ai un ASP DropDownList qui est renseigné sur l'événement Page_Load, quand je sélectionne un élément et appuyer sur un bouton pour l'élément sélectionné est effacée et le premier élément dans la liste déroulante de sélection. (La DropDownList est renseigné uniquement lorsque la page n'est pas de publication)
Aider 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;
}
}
source d'informationauteur mattgcon
Vous devez vous connecter pour publier un commentaire.
Le cycle de vie de page est le suivant (en plus d'autres mesures sans rapport avec votre question):
OnInit
Page_Load
Vous avez besoin d'avoir l'état d'affichage activé de sorte qu'il peut remplir la liste avant qu'il ne "choisit" le point. Dans ce cas, assurez-vous de ne pas remplir de nouveau dans le Page_Load et de perdre de la valeur sélectionnée. Faire quelque chose comme
if (!IsPostback) { //Populate }
Autrement, vous devez remplir la liste manuellement dans le
OnInit
événement sur chaque demande de page.Page_Load
est trop tard dans le cycle de vie, de sorte que l'élément sélectionné est perdu.Edit:
La
DropDownList
doit également la validité de l'ensemble de valeurs (distinct du texte affiché dans le navigateur). Cela se fait par leDataValueField
de la propriété. Chaque valeur doit être unique, sinon seul le premier élément dupliqué sera jamais sélectionné. Si vous regardez le code source HTML dans votre navigateur, vous devriez avoir:Les valeurs uniques sont utilisés pour la sélection de l'élément de droite sur le côté serveur.
Sont u à l'aide d'une Page Maître? Si oui, n'oubliez pas de mettre le EnableViewState sur true dans la page maître.