populating dropdown list in vb.net

2019-02-19 22:30发布

i have a dropdownlist that populates from the sql server database. populating the list is not a problem, but does anyone know how to populate the value part of the listitem.

<asp:dropdownlist id="colors">
<listitem value="1">black</listitem>
<listitem value="2">blue</listitem>
<listitem value="3">orange</listitem>
<listitem value="4">red</listitem>
<listitem value="5">violet</listitem>

how do you populate the value=1,2,3,4,5 when you're populating from table in database?

2条回答
\"骚年 ilove
2楼-- · 2019-02-19 23:04

Assuming that you have an IList implementation which you are binding the data objects to (you seem to have the results materialized in something already, as you say you can populate the text), what you need to do is specify the name of the property/member on your instances returned from your IList implementation.

So, assuming that you have a DataTable with columns of ID and Value, or an IList of objects that was populated from LINQ-to-SQL/Entities, each with an ID property and a Value property, you would do this:

DropDownList1.DataValueField = "ID"
DropDownList1.DataTextField = "Value"

You need to set it to the names of the fields as opposed to the values, as the binding mechanism uses the property descriptor framework to figure out how to map those strings to the properties/columns which contain the data.

查看更多
smile是对你的礼貌
3楼-- · 2019-02-19 23:07

First you have to build your select statement

Select [ID], [Value] From [Table]

You would store your query into a variable (I use "r" for return) Then you need to attach it to the dropdown

DropDownList1.DataTextField = r.Value
DropDownList1.DataValueField = r.ID
DropDownList1.Databind()

If you really REALLY need to loop, then try something along these lines (not code is not checked, just a general idea.)

For Each o as object in r
  DropDownList1.Items.Insert(o.ID,new ListItem(o.Value,o.ID))
Next

Or with the DataReader (again, untested, but prolly close)

While DataReader.Read()
  DropDownList1.Items.Insert(datareader("value"),new ListItem(datareader("name"),datareader("value"))
End While
查看更多
登录 后发表回答