1

5 つの項目を持つ DropDownlist があります。DropDownlist の最初に「選択」と書き、DropDownlist を開いたときに消えて、二度と表示されないようにしたい。新しいアイテムを追加して削除することでなんとかできましたが、Item.Add(new ListItem.....) を使わずにそれを行う方法はありますか?

また、新しいアイテムを無効にしようとしましたが(これも問題ありません)、「選択」が完全に非表示になり、DropDownlistをクリックしない限り表示する必要があります。

$('#<%=ddl.ClientID%>').focus(function() {           
        var hasValue = '<%=IfHasValue()%>';        
        if (hasValue == 'True')
        {
            if(!removed){
                var index = $('#<%=ddl.ClientID%>').get(0).selectedIndex;
                $('#<%=ddl.ClientID%> option:eq('+index+')').remove();
                removed = true;
            }
        }

このコードは機能していますが、ドロップダウンリストは最初のクリックで開きたくありませんでした (アイテムが削除されている場合)。もう一度クリックして開き、アイテムが削除されているかどうかを確認する必要があります (削除されています)。

アドバイスをお願いできますか?

PS 下手な英語で申し訳ありません。

4

3 に答える 3

0

まず、AppendDataBoundItems を true としてドロップダウンを宣言します。

<asp:dropdownlist id="ddl" runat="server" AppendDataBoundItems="true" >
    <asp:ListItem Value="0" Text="[ Select ]" Selected="True"></asp:ListItem>
</asp:dropdownlist>

ここで、コード ビハインドで通常どおりバインドを行います。ページがレンダリングされると、最初のオプションとして「選択」オプションが表示されます。

ここで、jQuery または Javascript を使用してドロップダウンの「クリック」イベントをバインドします。

$('#ddl').click(function() {
    // Either pre-select the next option before removing
    //$("#ddl")[0].selectedIndex = 1;

    $("#ddl option[value='0']").remove();

    // Or select the next option after removal 
    $("#ddl")[0].selectedIndex = 0;
});

これにより、「選択」オプション (値「0」) が削除されます。クリックするたびに、値が「0」のオプションを削除しようとします。初めて、それを見つけて削除します。その後、そのようなオプションが見つからないため、何もしません。

この特定のオプションに一意の値を指定してください。

編集

または、「フォーカス」をバインドして、マウスボタンアップがクリックによって登録される前にこの削除が行われるようにすることができます。

$('#ddl').focus(function() {
    $("#ddl")[0].selectedIndex = 1;
    $("#ddl option[value='0']").remove();
});

ここに実用的なフィドルがあります:http://jsfiddle.net/kne6K

最初に次のオプションを事前に選択してください。

于 2013-08-01T11:11:00.753 に答える