Find if value contains a string in a drop down lis

2019-09-12 08:41发布

I have a drop down list that looks like this:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True">
                        <asp:ListItem Text="Text1" Value="6,08/04/2015,P"></asp:ListItem>
                        <asp:ListItem Text="Text2" Value="5,11/17/2014,S"></asp:ListItem>
                        <asp:ListItem Text="Text3" Value="4,05/26/2014,P"></asp:ListItem>
                        <asp:ListItem Text="Text4" Value="3,01/20/2014,A"></asp:ListItem>
                        <asp:ListItem Text="Text5" Value="2,10/31/2013,G"></asp:ListItem>
                        <asp:ListItem Text="Text6" Value="1,04/09/2013,P"></asp:ListItem>
</asp:DropDownList>

I need to be able to get a date from a database and try to automatically select the correct date from the drop down list.

my code behind is as follows:

dim strDate as string = "10/31/2013"

DropDownList1.selectedvalue.contains(strDate)

something like that but it does not select the correct value from the drop down.

1条回答
闹够了就滚
2楼-- · 2019-09-12 09:13

Either of these should work. I would loop through the dropdown items collection and then split the value into an array. Validate that the values actually contain 3 values and get the second one to compare against strDate. Once you validate the value matches set the item as selected by either of the below methods and exit the For Each loop incase there are duplicates it would grab the 1st one.

Dim strDate As String = "10/31/2013"

For Each item As ListItem In DropDownList1.Items

    Dim split As Array = item.Value.ToString.Split(",")

    'verify the value is split to 3 values
    If split.GetUpperBound(0) = 2 Then

        'get 2nd item which is 1 as array are 0 based
        If split(1) = strDate Then
            item.Attributes.Add("selected", "true")
            Exit For
        End If

    End If

Next

'OR

For Each item As ListItem In DropDownList1.Items

    Dim split As Array = item.Value.ToString.Split(",")

    'verify the value is split to 3 values
    If split.GetUpperBound(0) = 2 Then

        'get 2nd item which is 1 as array are 0 based
        If split(1) = strDate Then
            DropDownList1.SelectedValue = item.Value
            Exit For
        End If

    End If

Next
查看更多
登录 后发表回答