【问题标题】:How to force a line break in the listitems of a dropdownlist?如何在下拉列表的列表项中强制换行?
【发布时间】:2010-02-01 17:07:21
【问题描述】:

我有一个已经手动数据绑定的下拉列表。我目前获取数据,遍历每个项目,并根据项目中的值,更改单个 ListItem 的 css。

例如:

foreach (Site mySite in myList)
        {
            ListItem li = new ListItem(mySite.FullAddress, mySite.Id.ToString());
            if (mySite.DisabledFlg)
            {
                li.Attributes.Add("style", "color:#999");
            }
            this.Items.Add(li);
        }

我试图强制列表项中的文本在某些点中断。我从数据源中检索的字符串当前在应该有换行符的任何地方都有一个“\r\n”。这适用于在普通文本框中显示,但不适用于列表项。 我尝试用"<br>" 替换“\r\n”,但是当我这样做时,它只会在列表中显示<br> 以及其余文本。我尝试将 listitem 内容包装在带有 width 属性的 "div" 中,但它也只是在 ListItem 文本中显示"div" 标签。 我还尝试在绑定时将以下内容添加到 ListItem 属性中:

                li.Attributes.Add("width", "100px");

但这也没有导致任何变化。

我见过自定义下拉列表控件,其中包含多行列表项。如何获得相同的结果?

【问题讨论】:

  • “我见过自定义下拉列表控件,其中包含多行列表项” - 您可以指向我们的任何公共 URL,以便我们知道您在追求什么?
  • 我最终做的是使用 AjaxControlToolkit 的 DropDownExtender 使用文本框和带有可选行的单列网格视图制作一个假下拉列表。它实现了我正在寻找的结果,因为使用标准下拉列表控件实际上是不可能的。

标签: c# asp.net drop-down-menu line-breaks listitem


【解决方案1】:

我认为这是不可能的。 DropDownList 控件呈现一个<select> 元素,但它的设计并不是为了让它的子<option> 元素有换行符。

实现相同效果的另一种方法是在将数据绑定到 DropDownList 之前对其进行处理。您可以拆分换行符并将相同的 DataValue 分配给那些重复的项目。您最终会得到如下 HTML:

<select>
    <option value="A">A</option>
    <option value="A">A.2</option>
    <option value="B">B</option>
</select>

您还可以找到一些花哨的 Javascript 控件或插件,它们可以模拟下拉控件,但比普通的 select 元素更灵活。

【讨论】:

    【解决方案2】:

    我认为您必须添加换行符作为它自己的列表项。然后,您可以执行一些 Javascript 和/或验证,以防止用户选择该“项目”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-03
      • 2022-01-20
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 2011-05-24
      相关资源
      最近更新 更多