5

asp.netにRadioButtonListがあります。リストからラジオボタンを変更するときにdivを表示または非表示にするという簡単なことをしようとしていますが、イベントOnSelectedIndexChangedが発生していません。理由がわかりません。これはコードです

<asp:RadioButtonList ID="CityStateZip" runat="server" ForeColor="#333300" AutoPostBack="true" RepeatDirection="Horizontal"  Width="274px" CausesValidation="true" ValidationGroup="SchoolSearchGroup"  OnSelectedIndexChanged="CityStateZip_SelectedIndexChanged">
                <asp:ListItem  Value="1" Text="City and State" />
                <asp:ListItem Value="2" Text="Zip Code" />
</asp:RadioButtonList>
<div id="zipcodediv" runat="server" visible="false" style="margin-left:75px">
 code.........
</div>
<div id="citystatediv" runat="server" style="margin-left:75px; width: 708px;">
code........
</div>

背後にあるコード

 protected void CityStateZip_SelectedIndexChanged(Object sender,EventArgs e)
    {           
        if (CityStateZip.SelectedValue == "1")
        {               
            zipcodediv.Visible = false;
            citystatediv.Visible = true;
        }
        if (CityStateZip.SelectedValue == "2")
        {                
            citystatediv.Visible = false;
            zipcodediv.Visible = true;
        }
    }
4

5 に答える 5

2

私はあなたと同じ問題を抱えていて、ASPXのAutoPostBack="true"私の定義に追加することでそれを修正しました。RadioButtonListあなたはすでにあなたの定義にそれを持っているように見えます、しかしこれの後にここに来る他の誰にとってもあなたが必要とするすべてであるかもしれません。

于 2016-03-18T17:07:14.867 に答える
1

これは、クライアント側で実行できる方法です。JQuery
スクリプトファイルをheadタグに 追加し、javascript関数の関数名をここに追加します(selectValue)テスト済みコード:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript">

        function selectValue() {

            if (document.getElementById("CityStateZip_0").checked == true) {

                $("#divOne").show(100);
                $("#divTwo").hide(100);

            }

            if (document.getElementById("CityStateZip_1").checked == true) {

                $("#divOne").hide(100);
                $("#divTwo").show(100);

            } 
        }
    </script>

Html Marup:

  <div>
        <asp:RadioButtonList ID="CityStateZip" runat="server" onchange="return selectValue();"
            RepeatDirection="Horizontal">
            <asp:ListItem Value="1" Selected="True">City and State</asp:ListItem>
            <asp:ListItem Value="2">Zip Code</asp:ListItem>

        </asp:RadioButtonList>
    </div><br /><br />
        <div id="divOne">
            <h3>Div one...</h3>
            Enter your City State content
        </div>

        <div id="divTwo">
            <h3>Div two...</h3>
            Enter you Zip code content
        </div>
于 2012-12-28T07:36:45.043 に答える
1

私はほとんどの答えに同意しますが、これが単にあなたがやろうとしていることであるなら、あなたはそれをクライアント側でやるべきだということです。ただし、サーバー側のアクションを必要とするもう少し複雑なことをしている場合は、最初に関数が呼び出されていない理由を理解する必要があります。私はこの分野の専門家ではありませんが、最初に確認するのは保護された通話です。これを公開に変更するとうまくいくかもしれません。私が見た他のすべては順調に見えます。私があなたに持っているもう一つのアドバイスは、あなたの関数が本当に呼び出されているかどうかを確認することです。あなたの場合、私はifステートメントを取り出して、これが機能するかどうかを確認します:zipcodediv.Visible = false ; citystatediv.Visible = true;

この手法は、何かが起動されていないとき、または関数がいつ起動されているか、問題が発生しているのかを知りたいときに使用します。

于 2012-12-28T19:33:08.247 に答える
0

私の推測では、div内に配置したコントロールの可視性をfalseに設定できたはずです。はいの場合は、それを削除して再試行してください。そうでない場合は、コードに他の間違いがないため、div内に配置したコードも投稿すると便利です。したがって、問題はdiv内にある必要があります。

于 2012-12-28T11:45:16.167 に答える
0

検証に問題がある場合は、CausesValidationを「false」に変更してみてください。

于 2012-12-28T13:15:41.217 に答える