2009-02-19 5 views
1

Je Databinding une liste déroulante avec la liste du tableau suivant:Besoin d'aide databinding un ArrayList de ListItems

ArrayList al = new ArrayList(); 
al.Add(new ListItem("Service Types", 1)); 
al.Add(new ListItem("Expense Types", 2)); 
al.Add(new ListItem("Payment Terms", 3)); 
al.Add(new ListItem("Classes", 4)); 
al.Add(new ListItem("Project", 5)); 
al.Add(new ListItem("Employees", 6)); 
al.Add(new ListItem("Payroll Codes", 7)); 

ddlType.DataSource = al; 
ddlType.DataBind(); 

Il en résulte le code HTML suivant:

<select name="ddlType"> 
    <option value="Service Types">Service Types</option> 
    <option value="Expense Types">Expense Types</option> 
    <option value="Payment Terms">Payment Terms</option> 
    <option value="Classes">Classes</option> 
    <option value="Project">Project</option> 
    <option value="Employees">Employees</option> 
    <option value="Payroll Codes">Payroll Codes</option> 
</select> 

Comment puis-je régler la DataTextField et Propriétés DataValueField dans ma liste déroulante afin que les valeurs des éléments de liste soient les valeurs dans la liste déroulante?

Répondre

-1
ddlType.DataTextField = "Text"; 
ddlType.DataValueField = "Value"; 
+0

Cela ne semble pas fonctionner avec 1.1 – mmattax

+0

.NET -1 cela ne fonctionne pas. NET 1.1 - le databiding est beaucoup plus sophistiqué dans les versions ultérieures du framework. –

0

Au lieu d'un lieu d'une ArrayList containg ListItems pourquoi ne vous créez pas un Hashtable?

Hashtable hash = new Hashtable(); 
hash.Add("one", "1") 
hash.Add("two", "2") 

dd.DataSource = ht 
dd.DataTextField = "value" 
dd.DataValueField = "key" 
dd.DataBind() 
+0

Fonctionne avec ListItem avec champ Value et Key. –

+0

Cela ne fonctionne pas dans .NET 1.1 - un HashTable est la meilleure solution pour .NET 1.1 –

+0

Cela ne semble pas fonctionner non plus. – mmattax

0

Avez-vous essayé de créer une ListItemCollection et de lier à cela?

1

Pourquoi s'embêter avec la liaison de données? Vous pouvez remplir la collection d'éléments directement:

ddlType.Items.Add(new ListItem("Service Types", 1)); 
... 
ddlType.Items.Add(new ListItem("Payroll Codes", 7)); 

et il même faire votre code 3 lignes plus courtes ;-)