Как отобразить сообщение под раскрывающимся списком, а не окно предупреждения, когда выбран конкретный элемент раскрывающегося списка?

Для обеспечения согласованности я не могу использовать окно предупреждения для отображения сообщения в моем коде, когда кто-то выбирает определенный элемент в раскрывающемся списке. Оно должно отображать красное сообщение под раскрывающимся списком только в том случае, если кто-то выбрал конкретный элемент.

Таким образом, в этом случае, если кто-то выбирает Алабаму, например, из раскрывающегося списка штатов, красное сообщение должно отображаться под полем раскрывающегося списка сразу после того, как выбор будет сделан. Старая версия этой формы работает правильно, но новая версия формы со многими изменениями не отображает это сообщение.

В коде за файлом (файл aspx.vb) у меня есть следующие фрагменты кода:

Protected Sub StateDropDownList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles StateDropDownList.SelectedIndexChanged
    If StateDropDownList.Text = "AK" Then
        AlabamaPanel.Visible = True
        Session("Alabama") = "Yes"
    Else
        AlabamaPanel.Visible = False
        Session("Alabama") = "No"
    End If
            StateDropDownList.Focus()
End Sub

Я использую предыдущий код с некоторыми изменениями, и другая часть проблемы заключается в том, что я не понимаю часть сеанса («Алабама») - я не нахожу нигде в коде, где указан сеанс («Алабама»). или, скорее, чтобы понять, что такое Session () и как он вообще может узнать, что такое сеанс Alabama ... Итак, если вы знаете что-то о Session (), что может быть полезно - я вижу это (https://msdn.microsoft.com/en-us/library/ms178581%28v=vs.140%29.aspx), но это не помогает мне понять. Единственное место в коде, которое существует сама по себе, - это элементы раскрывающегося списка. И, возможно, это часть проблемы, поскольку в старом коде Алабама была специально отмечена в длинном списке, например (в файле aspx, а не в файле aspx.vb), например:

<asp:DropDownList class="DropDowns" ID="StateDropDownList" runat="server" AutoPostBack="True">
    <asp:ListItem></asp:ListItem>
    <asp:ListItem Value="AL">Alabama</asp:ListItem>
    <asp:ListItem Value="AK">Alaska</asp:ListItem>
    <asp:ListItem Value="AZ">Arizona</asp:ListItem>
    <asp:ListItem Value="AR">Arkansas</asp:ListItem>
    <asp:ListItem Value="CA">California</asp:ListItem>
    <asp:ListItem Value="CO">Colorado</asp:ListItem>
    <asp:ListItem Value="CT">Connecticut</asp:ListItem>
    <asp:ListItem Value="DE">Delaware</asp:ListItem>
    <asp:ListItem Value="DC">District of Columbia</asp:ListItem>
    <asp:ListItem Value="FL">Florida</asp:ListItem>
    <asp:ListItem Value="GA">Georgia</asp:ListItem>
    <asp:ListItem Value="HI">Hawai'i</asp:ListItem>
    <asp:ListItem Value="ID">Idaho</asp:ListItem>
    <asp:ListItem Value="IL">Illinois</asp:ListItem>
    <asp:ListItem Value="IN">Indiana</asp:ListItem>
    <asp:ListItem Value="IA">Iowa</asp:ListItem>
    <asp:ListItem Value="KS">Kansas</asp:ListItem>
    <asp:ListItem Value="KY">Kentucky</asp:ListItem>
    <asp:ListItem Value="LA">Louisiana</asp:ListItem>
    <asp:ListItem Value="ME">Maine</asp:ListItem>
    <asp:ListItem Value="MD">Maryland</asp:ListItem>
    <asp:ListItem Value="MA">Massachusetts</asp:ListItem>
    <asp:ListItem Value="MI">Michigan</asp:ListItem>
    <asp:ListItem Value="MN">Minnesota</asp:ListItem>
    <asp:ListItem Value="MS">Mississippi</asp:ListItem>
    <asp:ListItem Value="MO">Missouri</asp:ListItem>
    <asp:ListItem Value="MT">Montana</asp:ListItem>
    <asp:ListItem Value="NE">Nebraska</asp:ListItem>
    <asp:ListItem Value="NV">Nevada</asp:ListItem>
    <asp:ListItem Value="NH">New Hampshire</asp:ListItem>
    <asp:ListItem Value="NJ">New Jersey</asp:ListItem>
    <asp:ListItem Value="NM">New Mexico</asp:ListItem>
    <asp:ListItem Value="NY">New York</asp:ListItem>
    <asp:ListItem Value="NC">North Carolina</asp:ListItem>
    <asp:ListItem Value="ND">North Dakota</asp:ListItem>
    <asp:ListItem Value="OH">Ohio</asp:ListItem>
    <asp:ListItem Value="OK">Oklahoma</asp:ListItem>
    <asp:ListItem Value="OR">Oregon</asp:ListItem>
    <asp:ListItem Value="PA">Pennsylvania</asp:ListItem>
    <asp:ListItem Value="RI">Rhode Island</asp:ListItem>
    <asp:ListItem Value="SC">South Carolina</asp:ListItem>
    <asp:ListItem Value="SD">South Dakota</asp:ListItem>
    <asp:ListItem Value="TN">Tennessee</asp:ListItem>
    <asp:ListItem Value="TX">Texas</asp:ListItem>
    <asp:ListItem Value="UT">Utah</asp:ListItem>
    <asp:ListItem Value="VT">Vermont</asp:ListItem>
    <asp:ListItem Value="VA">Virgina</asp:ListItem>
    <asp:ListItem Value="WA">Washington</asp:ListItem>
    <asp:ListItem Value="WV">West Virgina</asp:ListItem>
    <asp:ListItem Value="WI">Wisconsin</asp:ListItem>
    <asp:ListItem Value="WY">Wyoming</asp:ListItem>
</asp:DropDownList>

Но теперь мы обращаемся к другому файлу VB, чтобы получить раскрывающийся список состояний, и полного набора, показанного выше, больше нет в коде.

Поскольку нигде, кроме этого списка, который больше не существует, или этого списка, который существует в отдельном файле vb, который мы вызываем и который успешно заполняет раскрывающийся список, не существует, то, возможно, это может блокировать работу Session ()?

В новом коде (в файле aspx, а не в файле aspx.vb) все вышеперечисленное заменено на:

<label for="StateDropDownList">State <span class="Required">*</span></label>
<asp:DropDownList class="form-control" ID="StateDropDownList" runat="server">
</asp:DropDownList>

Я пытаюсь использовать (в файле aspx):

<asp:Panel ID="AlabamaPanel" runat="server" Visible="false">
    <tr>
        <td align="center" colspan="3">

            <br />
            <asp:Label ID="AlabamaLabel" runat="server" visibile="false" Text="Alabama Text that I want to appear right below the statedropdownlist field if they choose alabama."
                Font-Bold="True" ForeColor="#e00022" />

        </td>
    </tr>
</asp:Panel>

чтобы текст отображался на странице под раскрывающимся списком, если пользователь выбирает Алабаму, а он просто не отображается. Я также попытался вернуть длинный список состояний вместо вызова отдельного выпадающего vb-файла.

Я также пытаюсь использовать панель обновлений, заключив раскрывающийся список в

 <asp:UpdatePanel ID="UpdatePanel1" 
     UpdateMode="Conditional"
     runat="server">
     <ContentTemplate>

       </ContentTemplate>
   </asp:UpdatePanel>

И это принесло мне пользу, потому что до этого я не мог включить autopostback = "true", чтобы он не выводил меня на пустой экран всякий раз, когда кто-то выбирал Алабаму из раскрывающегося списка. Теперь, по крайней мере, весь экран не гаснет ... Но я все еще не получаю сообщение для отображения на экране.

Также я пробовал это, но все еще не появлялось сообщения:

<asp:DropDownList class="form-control" ID="StateDropDownList" runat="server" AutoPostBack="True" CausesValidation="False" OnSelectedIndexChanged="StateDropDownList_SelectedIndexChanged">

Есть какие-нибудь идеи или что-то явно очевидное, почему мое сообщение не появляется, когда кто-то выбирает Алабаму?


person user1258050    schedule 26.04.2015    source источник
comment
Я отредактировал ваше название. См. Должны ли вопросы включать «теги» в свои заголовки?, где нет единого мнения, не следует. Также следите за своим отступом - нам действительно нужно прочитать этот материал.   -  person John Saunders    schedule 26.04.2015


Ответы (2)


Попробуй это:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:UpdatePanel runat="server" ID="updtPnl">
<ContentTemplate>
    <asp:DropDownList class="form-control" ID="StateDropDownList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="StateDropDownList_SelectedIndexChanged">
        <asp:ListItem Value="Al">Alabama</asp:ListItem>
        <asp:ListItem>Other value</asp:ListItem>
    </asp:DropDownList>

    <br />
    <asp:Label ID="AlabamaLabel" runat="server" visibile="false" Text=""
    Font-Bold="True" ForeColor="#e00022" />
</ContentTemplate>
</asp:UpdatePanel>

И измените код программной части как:

Protected Sub StateDropDownList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles StateDropDownList.SelectedIndexChanged
If StateDropDownList.SelectedValue = "Al" Then
    AlabamaLabel.Text = StateDropDownList.SelectedItem.Text + " is selected!"
    AlabamaLabel.Visible = True
Else
    AlabamaLabel.Visible = False
End If
End Sub
person Khaksar Weqar    schedule 26.04.2015

В исходном коде, который вы предоставили, есть следующие проблемы:

1) вы просматриваете текст раскрывающегося списка для аббревиатуры, которая не является текстом в раскрывающемся списке, который является значением, поэтому вам нужно будет использовать что-то вроде StateDropDownList.SelectedValue = "AK"

2) Однако панель AlabamaPanel становится видимой; вы не устанавливаете для видимости метки значение true, поэтому панель видна, но не имеет видимых элементов управления.

person MaCron    schedule 27.04.2015