如何以编程方式在asp.net中添加具有特定预选项目的下拉列表

时间:2011-11-30 20:03:01

标签: asp.net vb.net drop-down-menu

我已经研究了如何使用以下代码创建DropDownList:

<select id="salesPersonDropList" runat="server"></select>

在我的.aspx页面中,我的代码后面循环运行数据库输出:

Dim newListItem As ListItem
newListItem = New ListItem("Title", "Value")
salesPersonDropList.Items.Add(newListItem )

我无法弄清楚的是如何以编程方式设置创建的列表项中的哪一个是在渲染的DropDownList中预先选择的列表项,即如何创建我在HTML中编写的内容:

<select>
     <option value="1">1</option>
     <option selected value="2">2</option>
</select>

基于数据库输出。由于后面的代码循环遍历数据库输出,它应该将输出与会话变量进行比较,如果它们的值匹配,则ListItem应该是在渲染的DropDown中选择的项。

4 个答案:

答案 0 :(得分:9)

Selected的{​​{1}}属性设置为true:

ListItem

答案 1 :(得分:0)

将结果存储在实现IEnumerable的对象中。

循环遍历结果集,然后循环遍历DropDownList的Items集合。如果当前Item等于结果集中的值,则将Selected属性设置为true

假设您从查询中返回了填充的数据表。

Foreach(Datarow row in Datatable.Rows)
{
        foreach (ListItem item in DropDownList.Items)
         {
             if (item.Value == row["columnName"])               
              {              
                 item.Selected = true;               
               }             
              }                        

}

请注意,如果未设置DropDownList的DataValueMember属性,则需要使用Text属性进行比较。

答案 2 :(得分:0)

需要在创建新列表项时测试它们是否与会话值匹配,然后将其设置为选中并将其添加到列表中。

Dim newListItem As ListItem
newListItem = New ListItem("Title", "Value")
if(newListItem.value == SessionValue)
   newListItem.Selected = True;
salesPersonDropList.Items.Add(newListItem )

答案 3 :(得分:0)

这可以在 vb.net 中的一个语句中完成。假设您的下拉列表的 ID 为 ddlYear,可以这样做:

ddlYear.Items.Insert(0, New ListItem("--- All Years ---", "All"))

这会在位置 0 或列表顶部插入新的列表项。

一般:

dropdownlist.items.insert(Position, New ListItem(Text, Value)