2010-09-26 56 views
0

我有一个包含用户控件的webform。在那个用户控件上是一组单选按钮。当更改单选按钮时,将根据所选的单选按钮显示或隐藏面板和文本框。需要调试提示:Postback上的可见性更改在一个页面上工作,但不是另一个

我可以给你正常工作的例子:

testcontrol.aspx:

<asp:RadioButtonList ID="ChoicesRadioButtonList" AutoPostBack="true" OnSelectedIndexChanged="ChoicesRadioButtonList_SelectedIndexChanged" runat="server"> 
    <asp:ListItem Text="Show 1"></asp:ListItem> 
    <asp:ListItem Text="Show 2"></asp:ListItem> 
</asp:RadioButtonList> 
<asp:Panel id="Panel1" CssClass="panel1" runat="server"></asp:Panel> 
<asp:Panel id="Panel2" CssClass="panel2" runat="server"></asp:Panel> 

testcontrol.aspx.cs:

protected void ChoicesRadioButtonList_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    RadioButtonList bob = (RadioButtonList)sender; 
    switch (bob.SelectedValue) 
    { 
     case "Show 1": 
      Panel1.Visible = true; 
      Panel2.Visible = false; 
      break; 
     case "Show 2": 
      Panel1.Visible = false; 
      Panel2.Visible = true; 
      break; 
    } 
} 

正如我所说,在测试表单中,这个工作正常。基于哪个单选按钮被选择,Panel1和Panel2正确显示。

我有另一个网页和用户控制与其他一些领域。当此代码位于该页面上时,我可以遍历ChoicesRadioButtonList_SelectedIndexChanged事件的代码,但没有任何反应。

我很遗憾接下来的步骤来调试(短暂重建整个页面)。任何人都可以提供任何建议在哪里看?

回答

0

我经历并开始评论代码段。在页面上发现一个CalendarExtender导致了问题。它抛出了javascript错误,导致页面无法正确渲染。

0

您是否尝试过使用asp:MultiView而不是asp:Panel?

然后,您不需要切换多个面板的可视性,只需使用SetActiveView(view)即可显示所需的视图。

0

您可以在PreRender事件中编写相同的代码吗?也许有些东西正在改变可见性回到默认状态,并且你忽略了它。

相关问题