RadioButtonList的OnSelectedIndexChanged事件未触发

时间:2012-12-28 07:12:19

标签: asp.net radiobuttonlist selectedindexchanged

我在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;
        }
    }

5 个答案:

答案 0 :(得分:1)

我遇到了与您相同的问题,并通过将AutoPostBack="true"添加到ASPX中的RadioButtonList定义来修复它。看来你已经在你的定义中有了这个,但对于其他任何人来到这里之后,这可能是你所需要的。

答案 1 :(得分:0)

您可以在客户端上执行此操作。
在head标签中添加 JQuery 脚本文件,在此处添加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>

答案 2 :(得分:0)

我的猜测是你可以将你在div中放置的控件的可见性设置为false。如果是,则将其删除并重试。如果没有,那么如果你发布你在div中的代码也会有帮助,因为你的代码中没有任何其他错误,所以问题必须在div中。

答案 3 :(得分:0)

如果任何验证问题,请尝试将CausesValidation更改为“false”。

答案 4 :(得分:0)

虽然我同意大多数答案,如果这只是你想要做的事情,那么你应该做客户端。但是,如果您正在做一些需要服务器端操作的更复杂的事情,则需要首先弄清楚为什么不调用您的函数。虽然我不是这方面的专家,但我要看的第一件事就是受保护的电话。将此更改为公开可能对您有用。我所看到的其他一切似乎都是有序的。我给你的另一条建议是检查你的函数是否真正被调用就是做一些非常简单的事情,在你的情况下,我会取出if语句,看看是否有效:     zipcodediv.Visible = false;     citystatediv.Visible = true;

无论何时没有被触发,或者我想知道函数何时被触发或遇到问题,我都会使用这种技术。