asp.net - 如何将标题属性添加到 ASP.NET DropDownList 的每个选项

标签 asp.net html-select

我正在处理一个较旧的 ASP.NET 项目(我认为不是 MVC),他们需要的功能之一是当他们将鼠标悬停在下拉列表中的某个项目上时查看该项目的描述。这可以通过使用以下代码并使用标题文本的 HTML 简单地完成:

<select>
    <option value="1" title="Option 1 Desc">Option 1</option>
    <option value="2" title="Option 2 Desc">Option 2</option>
    <option value="3" title="Option 3 Desc">Option 3</option>
</select>

好的,那么我如何使用 ASP.NET DropDownList 控件执行此操作?我有以下代码:

<asp:DropDownList ID="DropDownListLocation" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownListLocation_OnSelectedIndexChanged" CssClass="editorFieldServerControl" ClientIDMode="Static"></asp:DropDownList>

在“代码隐藏”页面中:

private void PopulateFacilityDropdown(List<FacilityAvailableByLocation> facilities, int? selectedID)
{
    DropDownListFacility.DataSource = facilities;
    DropDownListFacility.DataTextField = "FacilityName";
    DropDownListFacility.DataValueField = "FacilityID";
    DropDownListFacility.DataBind();            
    DropDownListFacility.Items.Insert(0, new System.Web.UI.WebControls.ListItem("", ""));                   

    if (selectedID.HasValue && selectedID.Value > 0)
        DropDownListFacility.SelectedIndex = facilities.FindIndex(b => b.FacilityID == selectedID.Value);
        else DropDownListFacility.SelectedIndex = 0;
    }
}

基本上,设施列表中的每个设施都有我可以获取的 ID、名称、描述的属性。我只想能够在每个 <option> 上放置一个标题属性被渲染并将描述放入其中。或者能够为每个 <option> 添加自定义属性,如“数据描述”标签,然后我可以自己使用一些 jQuery 将标题添加到每个选项标签中,这很简单。

我怀念那些你可以循环遍历列表并手动输出自定义下拉代码的日子。

有什么想法吗?非常感谢

最佳答案

您可以像这样手动为每个列表项添加一个标题属性。试一试:

    private void PopulateFacilityDropdown(List<FacilityAvailableByLocation> facilities, int? selectedID)
    {
        DropDownListFacility.DataSource = facilities;
        DropDownListFacility.DataTextField = "FacilityName";
        DropDownListFacility.DataValueField = "FacilityID";
        DropDownListFacility.DataBind();            
        DropDownListFacility.Items.Insert(0, new System.Web.UI.WebControls.ListItem(String.Empty, String.Empty);                   

        foreach (FacilityAvailableByLocation f in facilities)
        {
            DropDownListFacility.Items.FindByValue(f.FacilityID).Attributes.Add("title", f.TitleDescription);
        }

        if (selectedID.HasValue && selectedID.Value > 0)
            DropDownListFacility.SelectedIndex = facilities.FindIndex(b => b.FacilityID == selectedID.Value);
            else DropDownListFacility.SelectedIndex = 0;
        }
    }

f.TitleDescription 将是您希望标题成为的属性。

关于asp.net - 如何将标题属性添加到 ASP.NET DropDownList 的每个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12667222/

相关文章:

c# - 将数据表转换为私有(private) List<List<string>>?

c# - 如何访问没有页面扩展名.aspx的页面

javascript - CSS 和 JS 文件丢失错误

jquery - 计算列表中选项的数量

c# - DropDownList 中的 System.Data.DataRowView

javascript - 如何在HTML选择下拉列表中显示后半部分文字?

asp.net - 使用 ASP.NET MVC Controller 注入(inject)的好处?

asp.net - Ninject owin 依赖项到 IIS Web 主机中以实现 ASP.net Identity

javascript - 向 html 选择元素添加选项

javascript - 如何在不选择的情况下加载选择器中的所有选项