[ ASP.NET ] DropDownList コントロールの選択アイテムを変更する

Pocket

ドロップダウンリスト(DropDownList) コントロールの選択済みアイテムを変更する方法を記載しています。

スポンサーリンク

ASPX

以下のようにドロップダウンリストの 2番目のアイテムが選択状態であるものとします。

<form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="DropDownList1" runat="server">
            <asp:ListItem Value="val1" Text="text1" ></asp:ListItem>
            <asp:ListItem Value="val2" Text="text2" Selected="True"></asp:ListItem>
            <asp:ListItem Value="val3" Text="text3"></asp:ListItem>
            <asp:ListItem Value="val4" Text="text4"></asp:ListItem>
        </asp:DropDownList>
    </div>
</form>

DropDownList.SelectedIndex で選択アイテムを変更する

SelectedIndex プロパティは選択アイテムを変更(取得)するためのプロパティなので、 このプロパティを使う方法が確実だと思います。ドロップダウンリストの項目をループさせ、条件が一致 ( Value, Text ) するアイテムのインデックスを SelectedIndex に設定しています。詳細はコメントを参照ください。

VB.NET

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Dim idx As Integer = 0
    ' アイテムをループで検索し、条件が一致した場合、選択状態にする
    For Each item As ListItem In DropDownList1.Items
        
        ' value が "val4" のアイテムを選択状態とする
        If (item.Value = "val4") Then
            DropDownList1.SelectedIndex = idx
            Exit For
        End If
        
        '' text が "text4" のアイテムを選択状態とする
        'If (item.Text = "text4") Then
        '    DropDownList1.SelectedIndex = idx
        '    Exit For
        'End If
        
        idx += 1
    Next
End Sub

C#

protected void Page_Load(object sender, EventArgs e)
{
    int idx = 0;
    // アイテムをループで検索し、条件が一致した場合、選択状態にする
    foreach(ListItem item in DropDownList1.Items)
    {
        // value が "val4" のアイテムを選択状態とする
        if (item.Value == "val4") {
            DropDownList1.SelectedIndex = idx;
            break;
        }
        //// text が "text4" のアイテムを選択状態とする
        //if (item.Text == "text4") {
        //    DropDownList1.SelectedIndex = idx;
        //    break;
        //}
        idx ++;
    }
}

 

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *