2015-04-26 38 views
0

爲了保持一致性,當某人在下拉列表中選擇特定項目時,我無法使用警告框在我的代碼中顯示消息。只有當某人選擇了特定項目時,才需要在下拉字段下方顯示紅色消息。如何在下拉列表下方顯示消息而不是在選擇特定下拉列表項目時顯示警告框?

所以在這種情況下,如果有人從狀態下拉列表中選擇阿拉巴馬州,例如,紅色消息需要在選擇後立即顯示在下拉列表框下方。此表單的舊版本可以正常工作,但其中包含許多更改的新版本表單不顯示此消息。

在代碼隱藏文件(該文件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(「Alabama」)列出的代碼中找到其他任何地方,或者更確切地知道Session()是什麼,以及它甚至會知道Alabama Session是什麼。所以如果你對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> 

來獲取文本下面的下拉字段在頁面上顯示出來,如果用戶選擇了阿拉巴馬州和它根本不顯示。我也試着把長長的狀態列表放回來,而不是呼叫單獨的下拉列表文件。

我也想使用更新面板,與

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

     </ContentTemplate> 
    </asp:UpdatePanel> 

包裝下拉列表並已經因爲之前我受益,我是不是能夠包括將AutoPostBack =「真」如果有人從下拉列表中選擇了阿拉巴馬州,它就會將我帶入黑屏。現在至少整個屏幕並沒有消失......但我仍然沒有看到顯示在屏幕上的消息。

而且我已經試過這一點,但仍沒有消息顯示:

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

任何意見或任何東西是作爲有目共睹,爲什麼我的郵件沒有顯示出來時,有人選擇阿拉巴馬州?

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。另外,請注意你的縮進 - 我們實際上必須閱讀這些東西。 –

回答

0

試試這個:

<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 
0

在您提供您有以下問題的原代碼:

1)你是查看下拉文本的縮寫,這不是下拉文本中的值,因此您需要使用類似StateDropDownList.SelectedValue =「AK」的文本

2)AlabamaPanel被設置爲可見;您不要將標籤的可見性設置爲true,因此面板可見,但其中沒有可見的控件。

相關問題