2012-02-06 4 views
0

J'ai une liste déroulante avec des valeurs codées en dur:Bind avec des valeurs Dropdown hardcoded

<asp:DropDownList ID="BulletinTypeDropDown" runat="server"> 
    <asp:ListItem Selected="True" Text="--Select--" Value="--Select--"></asp:ListItem> 
    <asp:ListItem Text="News" Value="News"></asp:ListItem> 
    <asp:ListItem Text="report" Value="report"></asp:ListItem> 
    <asp:ListItem Text="System" Value="System"></asp:ListItem> 
    <asp:ListItem Text="Reminder" Value="Reminder"></asp:ListItem> 
</asp:DropDownList> 

Je veux l'utiliser pour insérer et modifier les valeurs d'un db. Par exemple, lors de l'ajout d'un enregistrement, l'utilisateur sélectionne «rapport» et «rapport» est inséré dans la base de données. Ensuite, si l'utilisateur va éditer la page, puisque la valeur dans la base de données est 'rapport', alors la liste déroulante doit montrer 'rapport' est sélectionné. Mais je suis capable de stocker la valeur dans DB avec succès, mais je ne pouvais pas récupérer la page sélectionnée pendant la page d'édition. J'utilise le travail de cadre d'Entity donc, je me suis fatigué de tant de manières mais n'ai pas pu obtenir la valeur dans la page d'édition. Voici comment j'ai essayé. // intype est la valeur que je reçois de la base de données et retourne la valeur de l'objet mais en passant la valeur null dans la valeur DropDown.selected.

Quelqu'un peut-il m'aider s'il vous plaît quelles sont les autres façons dont je peux travailler pour obtenir les valeurs dans ma liste déroulante.

Merci

+0

A quel événement eventhandler dans le cycle de vie de la page essayez-vous de définir la dropdownlist-value (Page_load, Button_click)? Comment la page d'édition reçoit-elle la valeur? C'est plus facile quand vous montrez plus de code. –

+0

J'essaie d'afficher la liste déroulante à page_load.I ont juste codé en dur ces valeurs et dans dropdownlist et dans le code derrière je fatigué je fais juste comme ci-dessous, if (bulletinList.Bulletintype! = Null) { BulletinTypeDropDown.SelectedValue = bulletList.Bulletintype;} – user1098449

+0

Quand définissez-vous la valeur de lecture de la base de données? Peut-être que votre liste déroulante n'a pas les éléments codés en dur au moment où la valeur SelectedValue est définie? Rompez sur la ligne où SelectedValue est défini et vérifiez Items.Length. –

Répondre

0

Vous devez trouver le texte sur la dropdownlist et définissez la propriété sélectionnée true Exemple:

//pass the string you want to set selected to true --> assuming in your case bulList.intype.ToString() 
BulletinTypeDropDown.Items.FindByText(bulList.intype.ToString()).Selected = true; 

Vous pouvez également faire la même en utilisant FindByValue. Plus d'informations ici: http://forums.asp.net/t/1004541.aspx/1

+0

J'ai essayé même ceci mais il jetait une erreur en disant que ... La référence d'objet n'est pas définie à une instance d'un objet. – user1098449

+0

Cochez bulList.intype.ToString() est un texte qui n'est pas nul et dont la valeur correspond aux éléments de votre liste DropDown. – antar

+0

bulList.intype.ToString() transmet une valeur exacte qui se trouve dans DB mais Dropdownlist passe toujours --select--. – user1098449

0
BulletinTypeDropDown.SelectedValue = valueFromDb; 
+0

J'ai fait la même chose mais VlauefromDb me donne la valeur à partir de Db mais BulletinTypeDropdown.selectedvalue n'attribue pas la valeur de DB à sa valeur toujours --select--. – user1098449

+0

Je suppose que 'DropDownList1_Load' est appelé après que vous ayez assigné' SelectedValue' à la base de données. Définissez des points d'arrêt et vérifiez. – Danny

0

Ainsi, le dropdownlist reste de la valeur par défaut, le cas échéant trouver une méthode de liaison dans votre code probablement à l'intérieur chargement de la page.
Sinon, si bulList.intype renvoie la valeur, je ne pense pas que la liste déroulante refuse d'afficher la valeur sélectionnée. Peut être vérifier la valeur retournée pour les espaces. Essayez ceci:

string s = = bulList.intype.ToString().Trim(); 
DropDown.SelectedValue = s; 
+0

Pas de chance, j'ai essayé En affectant Trim(), mais son me montrant toujours le même que précédemment. La chaîne S me montrant la valeur correcte, mais quand il s'agit de DropDown.SelectedValue me montre toujours comme --select-- – user1098449

+0

êtes-vous appeler la méthode DataBind() dans votre code? – Mubarek

+0

Non je n'utilise pas databind – user1098449

0

Voici une soultion qui peut fonctionner pour vous. alors créez votre liste déroulante.

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" 
     onload="DropDownList1_Load" > 
    </asp:DropDownList> 


protected void DropDownList1_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     List<string> DDLlist = new List<string>(); 
     DDLlist.Add("Report"); 
     DDLlist.Add("News"); 
     DropDownList1.DataSource = DDLlist; 
     DropDownList1.SelectedValue = "Report"; 
     DropDownList1.DataBind(); 
    } 

Vous pouvez ajouter à la liste DDLlist pour ajouter de nouveaux éléments de manière dynamique.

+0

J'ai essayé cela et je reçois ce que je voulais, mais le problème est dans la liste déroulante je vois toutes les valeurs assigner à toutes les valeurs id's.mais je voulais seulement des éléments distincts dans dropdownlist. – user1098449

+0

pouvez-vous me donner plus de détails sur ce que vous voulez dans la liste à apparaître. – Ches

+0

Nous vous remercions de votre aide, mais cela fonctionne maintenant. – user1098449

Questions connexes