2

私は古いASP.NETプロジェクト(MVCではないと思います)に取り組んでいます。必要な機能の1つは、ドロップダウンリストでアイテムにカーソルを合わせたときにアイテムの説明を表示することです。これは、次のコードを使用し、タイトルテキストを使用して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を使用して、各オプションタグにタイトルを自分で追加できます。

リストをループしてカスタムドロップダウンコードを手動で出力できる時代が恋しいです。

何か案は?どうもありがとう

4

1 に答える 1

7

このように、各リスト項目に手動でタイトル属性を追加できます。試してみます:

    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は、タイトルにするプロパティになります。

于 2012-10-01T03:40:12.687 に答える