我有一个将 AutoPostBack 设置为 true 的 ASP.Net RadioButtonList 控件。我还有一个 OnSelectedIndexChanged 函数,只要用户更改选择,就会调用该函数。最后,要求用户提供这个控件所请求的信息,所以当用户到达页面时,我有一个默认选择——
<asp:RadioButtonList ID="rblHighestDegree" runat="server" AutoPostBack="true"
onselectedindexchanged="rblHighestDegree_SelectedIndexChanged">
<asp:listitem Runat="server" Text="Master's Degree" Selected="True" />
<asp:listitem Runat="server" Text="Doctorate" />
</asp:RadioButtonList>
在上面的代码示例中,当用户从默认选择(例如,“硕士学位”)切换到不同的选项(例如,“博士”)时,就会触发 SelectedIndexChanged 事件。然后,如果用户改变主意,并随后选择了原来的默认选项,则 SelectedIndexChanged 事件将再次被触发。这完全按预期和预期工作。
根据上面的选择,我在代码隐藏中启用或禁用了第二个控件...
<asp:ScriptManager ID="scriptmanager1" runat="server" />
<asp:UpdatePanel ID="updatepanel1" runat="server">
<ContentTemplate>
<asp:RadioButtonList ID="rdlYearsOfStudy" runat="server" Enabled="false">
<asp:listitem Runat="server" Text="Less than 3 years" />
<asp:listitem Runat="server" Text="3 - 4 years" />
<asp:listitem Runat="server" Text="5 - 6 years" />
</asp:RadioButtonList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="rblHighestDegree" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
只有在我将第二个控件放在 ASP.Net AJAX UpdatePanel 中以启用异步回发(如上所示)之后,才会出现问题。一旦我这样做了,原来的 RadioButtonList 控件只会在我选择一个 ListItem 时回发,当用户到达页面时默认情况下没有选择该 ListItem。如果用户随后选择原始默认选择,则不会发生回发。
澄清一下,如果我没有在 ASP.Net AJAX UpdatePanel 中放置适用的第二个控件就回发,那么无论用户选择哪个 RadioButtonList ListItem,SelectedIndexChanged 都会起作用。另一方面,在我在 UpdatePanel 中放置一个控件以应用 AsyncPostBackTrigger 后,回发只会发生在非默认 ListItems 的选择中。
可能相关的更多信息是我正在使用 Microsoft Visual Studio 2008 进行编码,并且我使用的 UpdatePanel 控件是 Microsoft AJAX 库(不是 ASP.NET AJAX 控件工具包)的一部分。
我将不胜感激有关如何让 ASP.Net AJAX 工作的任何见解,以便在用户选择 RadioButtonList 中的默认或非默认 ListItems 时触发 SelectedIndexChanged 事件。作为记录,我尝试在 page_load 事件中设置 RadioButtonList 默认选择,但没有帮助。
提前感谢您的任何帮助!