2010-08-30 5 views
0

J'ai une liste déroulante qui est renseignée dans l'événement de chargement de page à partir d'une table de base de données.Modification de la liste déroulante de la liste de données par programme

La liste déroulante possède un DataTextField défini sur un nom de projet et DataValueField sur l'ID du projet (interger).

Plus tard, je change le dropdowlist élément sélectionné avec ce code en cas SelectedIndexChanged d'un gridview

GridViewRow row = GridView1.SelectedRow; 
ddlProjectList.SelectedItem.Text = row.Cells[2].Text; 

Est Modification de la liste déroulante avec ce code provoque la propriété DataValueField pour changer le numéro d'identification du projet correct aussi ? Sinon, y a-t-il une meilleure façon de faire cela?

======================================== EDITER effectivement ce code semble ajouter un élément supplémentaire à la liste afin que le projet que j'ai défini avec ce code soit répertorié deux fois donc je ne pense pas que mon code est correct

+0

Une meilleure réponse http://stackoverflow.com/questions/3496456/setting-dropdownlist-selecteditem-programmatically#answer-3496495 – Four

Répondre

0

Cela ne change rien d'autre que le texte de l'élément sélectionné dans votre DropDownList. Voulez-vous modifier le texte et la valeur du projet, ou voulez-vous sélectionner le projet dans DropDownList qui se rapporte à la ligne sélectionnée dans la grille?

Pour modifier le nom et l'ID du projet, vous devez le modifier dans la source de données derrière ProjectList. Mais si vous voulez juste pour sélectionner le projet connexe, vous pouvez utiliser ceci:

 
var row = GridView1.SelectedRow; 

if (ProjectList.Items.FindByText(row.Cells[2].Text) != null) 
{ 
    ProjectList.ClearSelection(); 
    ProjectList.Items.FindByText(row.Cells[2].Text).Selected = true; 
} 
0

La définition de SelectedItem.Text ne modifie pas réellement la sélection élément par son texte, il modifie le texte de l'élément actuellement sélectionné. Vous devez utiliser ddl.Items.FindItemByText (ou il peut être libellé FindByText, j'oublie pour le moment) pour trouver l'élément, puis définissez la propriété ListItem.Selected sur true.

HTH.

0

Vous pouvez faire

ddlProjectList.FindByText(row.Cells[2].Text).Selected = true; 

Cela fait régler.

Questions connexes