【问题标题】:How to programmatically add a Drop down list in asp.net with specific pre-selected item如何以编程方式在 asp.net 中添加带有特定预选项目的下拉列表
【发布时间】:2011-11-30 20:03:01
【问题描述】:

我已经研究出如何使用以下代码创建 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 中选择的项目。

【问题讨论】:

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


    【解决方案1】:

    将ListItem 的Selected 属性设置为true:

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

    【讨论】:

    • 太棒了!我知道这很简单,多年来一直在努力尝试正确添加该属性的各种安排!谢谢。
    • 是的..有很多方法..根据您填充组合的方式,答案中的一个可能是最安全和最适合您的...如果您知道 确定该项目在组合中,您可以执行someDropDownList.Items.FindByValue("1").Selected = True 之类的操作,但如果FindByValue 找不到任何值,您将得到一个异常..
    【解决方案2】:

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

    遍历您的结果集,然后遍历您的 DropDownList 的 Items 集合。如果当前项等于结果集中的值,则将 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 属性进行比较。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        一般来说:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-04
          • 1970-01-01
          • 2021-02-12
          • 1970-01-01
          • 1970-01-01
          • 2013-04-16
          • 1970-01-01
          • 2010-10-23
          相关资源
          最近更新 更多