我dropdownlist
在 asp.net 网络表单中有一个长值作为其选项。每次我选择一个值时,它都应该显示在dropdownlist
字段上。
<asp:DropDownList ID="addressDdl" runat="server" CssClass="form-control" Width="210px">
</asp:DropDownList>
我使用这种方法填充我的下拉列表:
protected void Page_Load(object sender, EventArgs e)
{
List<address> addressAll = //get table data from SQL that has been returned as a list
addressDdl.DataSource = addressAll;
addressDdl.DataTextField = "address";
addressDdl.DataValueField = "addressID";
addressDdl.DataBind();
addressDdl.Items.Insert(0,"--Select--");
}
但是,由于我dropdownlist
的不够长,所以只能显示其中的一部分。有什么办法dropdownlist
可以在 2 行中显示选定的值?
下面是我面临的问题的一个例子:
由于您使用的是form-control
CSS 类,因此我确定您使用的是 Bootstrap CSS。
在 Bootstrap 中,可以使用元素的data-content
属性来实现多行选项select
。
注意:对于下面可用的 2 个首选,请确保要显示的任何长字符串值data-content
都<br />
在它们之间插入了标记(请参阅此示例fiddle)。可以使用以下方法插入标记String.Insert
(建议使用在address
类中存储包装值的附加属性):
foreach (var addr in addressAll)
{
if (addr.address.Length >= [position_index])
{
// new property to store wrapped values to be displayed in data-content attribute
addr.longAddress = addr.address.Insert([position_index], "<br />");
}
}
1) 使用asp:DropDownList
服务器控件实现自定义属性,在数据绑定后在代码隐藏中手动添加。这是代码隐藏部分:
protected void Page_Load(object sender, EventArgs e)
{
List<address> addressAll = ... //get table data from SQL that has been returned as a list
addressDdl.DataSource = addressAll;
addressDdl.DataTextField = "address";
addressDdl.DataValueField = "addressID";
addressDdl.DataBind();
addressDdl.Items.Insert(0,"--Select--");
// before transform the list into array, use foreach loop provided above
var arr = addressAll.ToArray();
// note: zero-index skipped here
for (int i = 1; i <= addressDdl.Items.Count; i++)
{
// add data-content attribute for select options
addressDdl.Items[i].Attributes.Add("data-content", arr[i - 1].longAddress.ToString());
}
}
2) 作为替代, aRepeater
可用于替换DropDownList
普通select
元素,但ItemTemplate
用于设置选项属性:
ASPX
<asp:Repeater ID="rptDeliveryAddress" runat="server">
<HeaderTemplate>
<select id="addressDdl">
<option value="">--Select--</option>
</HeaderTemplate>
<ItemTemplate>
<option data-content="<%# DataBinder.Eval(Container.DataItem, "[longAddress]") %>" value="<%# DataBinder.Eval(Container.DataItem, "[address]") %>"><%# DataBinder.Eval(Container.DataItem, "[address]") %></option>
</ItemTemplate>
<FooterTemplate>
</select>
</FooterTemplate>
</asp:Repeater>
3) 我知道的另一种使用多行下拉菜单的方法是在 CSS 选择器中操作宽度selectPicker
:
ASPX
<asp:DropDownList ID="addressDdl" runat="server" CssClass="form-control selectpicker large-bootstrap-select" ... />
CSS
/* CSS Class */
.bs-container.large-bootstrap-select {
.dropdown-menu {
width: 100px; /* set this attribute with desired size in pixels */
li a span.text {
word-wrap: break-word;
white-space: normal;
}
}
}
JS
$('#<%= addressDdl.ClientID %>').selectpicker();
参考:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句