2017-01-31 11 views
0

ラジオボタンからのユーザーの選択に基づいて特定のコントロールを表示または非表示にする必要がありますが、そのコントロールを表示または非表示にする必要がありますユーザーがラジオボタンの1つ。ユーザーがラジオボタンをクリックしたときにイベントが発生する

ASP側でOnSelectedIndexChangedを追加しようとしましたが、何もしないようです。ラジオボタンの1つをクリックするとすぐにコードをトリガーする他の方法はありますか?

<asp:RadioButtonList ID="rblMeasurementSystem" runat="server" OnSelectedIndexChanged="rblMeasurementSystem_SelectedIndexChanged"> 
    <asp:ListItem Text="Leads" Value="1" /> 
    <asp:ListItem Text="Audit Thresholds" Value="2" /> 
    <asp:ListItem Text="Root Cause" Value="3" /> 
    <asp:ListItem Text="Pend Reasons" Value="4" /> 
    <asp:ListItem Text="AA Review" Value="5" /> 
</asp:RadioButtonList> 

とコードビハインド私が持っている中で:

protected void rblMeasurementSystem_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string value = rblMeasurementSystem.SelectedItem.Value.ToString(); 
    if (value == "1") 
    { 
     lblLabel1.Visible = true; 
     txtText1.Visible = true; 
     lblLabel2.Visible = false; 
     txtText2.Visible = false; 
     lblLabel3.Visible = false; 
     txtText3.Visible = false; 
     lblLabel4.Visible = false; 
     txtText4.Visible = false; 
     lblLabel5.Visible = false; 
     txtText5.Visible = false; 
    } 

    if (value == "2") 
    { 
     lblLabel1.Visible = false; 
     txtText1.Visible = false; 
     lblLabel2.Visible = true; 
     txtText2.Visible = true; 
     lblLabel3.Visible = false; 
     txtText3.Visible = false; 
     lblLabel4.Visible = false; 
     txtText4.Visible = false; 
     lblLabel5.Visible = false; 
     txtText5.Visible = false; 
    } 

    if (value == "3") 
    { 
     lblLabel1.Visible = false; 
     txtText1.Visible = false; 
     lblLabel2.Visible = false; 
     txtText2.Visible = false; 
     lblLabel3.Visible = true; 
     txtText3.Visible = true; 
     lblLabel4.Visible = false; 
     txtText4.Visible = false; 
     lblLabel5.Visible = false; 
     txtText5.Visible = false; 
    } 

    etc... 

} 
+1

パネル/グリッド上のコントロールをグループ化することができるので、1つの '.Visible'変更でコントロールを非表示にすることができます。 –

+0

問題は、asp:ラジオボタンイベントは通常 'runat = "server"'タイプ、つまりサーバーコントロールです。あなたが探しているのは、DOMとASPコントロールとのクライアント側のやりとりのようなものです。この 'クライアント側'を処理するために、JavaScriptの機能/装飾を追加する必要があります。 –

+0

@JeroenvanLangen - 良い提案!それは私のコードを大幅に削減しました。 –

答えて

3

あなたのコードの問題は、コードがサーバーにポストバックされることはありません、ということである私が持っている瞬間

(ASP RadioButtonのようなコントロールの理由は、CheckBoxのコントロールは、実際のポストバックがボタンなどで発生した場合にのみトリガーされることを意味するキャッシュされたイベントを公開します)。あなただけのラジオボタンの選択に基づいて、いくつかのコントロールを隠し\見せている場合は、JavascriptjQueryを使用してクライアント側でこれを行う必要があり、また

<asp:RadioButtonList ID="rblMeasurementSystem" runat="server" AutoPostBack="true" 
    OnSelectedIndexChanged="rblMeasurementSystem_SelectedIndexChanged"> 

- :単純にポストバックを強制的にtrueにAutoPostBackプロパティを設定します。

関連する問題