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

时间:2012-10-01 03:34:32

标签: 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>上添加一个title属性,并将描述放入其中。要么或者能够为每个<option>标签添加像'data-description'这样的自定义属性,那么我可以使用一些简单的jQuery将标题添加到每个选项标签中。这很容易。

我想念您可以循环浏览列表并手动输出自定义下拉代码的日子。

有什么想法吗?非常感谢

1 个答案:

答案 0 :(得分:7)

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

    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将是您想要标题的属性。