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

这就是您可以在客户端执行的操作。
在 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>
于 2012-12-28T07:36:45.043 回答
1

虽然我同意大多数答案,如果这只是你想要做的,那么你应该在客户端做。但是,如果您正在执行一些需要服务器端操作的更复杂的操作,您需要首先弄清楚为什么您的函数没有被调用。虽然我不是这方面的专家,但我首先要看的是受保护的呼叫。将此更改为 public 可能对您有用。我看过的其他一切似乎都井井有条。我给你的另一条建议是检查你的函数是否真的被调用是做一些非常简单的事情,在你的情况下,我会取出 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 回答