我有一个已经手动数据绑定的下拉列表。我目前获取数据,遍历每个项目,并根据项目中的值,更改单个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);
}
我正试图强制listitem中的文本在某些点上中断。我从数据源检索的字符串当前在任何应该有换行符的地方都有一个“\ r \ n”。这适用于在普通文本框中显示,但它不适用于listitem。
我尝试用"<br>"
替换“\ r \ n”,但是当我这样做时,它只会在listem中显示<br>
以及文本的其余部分。我尝试使用width属性将listitem内容包装在"div"
中,但它也只是在ListItem文本中显示"div"
标记。
我还尝试将以下内容添加到bind:
li.Attributes.Add("width", "100px");
但这并没有导致任何改变。
我见过自定义下拉列表控件,其中包含多行列表项。我如何获得相同的结果?
答案 0 :(得分:3)
我不认为这是可能的。 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
元素更灵活。
答案 1 :(得分:2)
我认为你必须添加换行符作为它自己的列表项。然后,您可以执行一些Javascript和/或验证,以防止用户选择“项目”。