2009-10-22 8 views
0

Je suis lié à une liste déroulante. Cela fonctionne sur la charge initiale. Lors des chargements suivants (publications), il ne rafraîchit pas les éléments dans la liste déroulante. J'ai confirmé que sur les publications, les données sont liées à la liste déroulante et les éléments sont ajoutés avec succès. Mais quand la page rend la liste déroulante n'a aucune des nouvelles valeurs.La liste déroulante ne s'affiche pas après la liaison de données

Je vois deux possibilités: Le contrôle ne rend pas les nouvelles valeurs ou les valeurs sont effacées. Je ne sais pas où chercher les problèmes possibles.

Modifier

J'ai découvert le problème. La liste déroulante a été intégrée dans un UpdatePanel conditionnel. Appelez simplement "UpdatePanel.Update();" résolu le problème.

Répondre

1

Lors de la publication, le viewstate est réappliqué + vous avez dit que vous essayez de charger à nouveau les valeurs. Je suggère de laisser Viewstate porter tout le poids sur la publication. Charger uniquement les valeurs lorsque la page est d'abord frappé en ajoutant si (IsPostBack!) comme si

using (DataView dv = dtProductGroup.DefaultView) 
{ 
    if (! IsPostBack) { 

     dv.ApplyDefaultSort = false; 
     dv.Sort = "KVIGroupName ASC"; 

     ddlGroup.ClearSelection(); 
     ddlGroup.Items.Clear(); 

     string strAll = Localization.GetResourceValue("_strddlStatusLBAll"); 
     ddlGroup.DataValueField = "KVIGroupId"; 
     ddlGroup.DataTextField = "KVIGroupName"; 
     ddlGroup.DataSource = dv; 
     ddlGroup.DataBind(); 

     ListItem item = new ListItem(strAll, "0"); 
     ddlGroup.Items.Insert(0, item); 
    } 
} 

Edit: En outre, votre syntaxe assure l'objet DataView référencé par dv est défera après la sortie du bloc de code . Ma deuxième hypothèse est que cela provoque un effet secondaire qui provoque le problème.

using (DataView dv = dtProductGroup.DefaultView) 
{ 

Au lieu de cela quitter le utilisation et écrire un declaratoin régulier comme ce qui suit (Le DataView va être mis au rebut avec tout le reste lorsque la page est fait le rendu donc il n'y a pas vraiment besoin de le faire vous-même).

DataView dv = dtProductGroup.DefaultView; 

Voir la MSDN documentation about 'using' and IDisposable pour les informations détaillées.

+0

+1 merci pour la réponse à travers –

Questions connexes