代码之家  ›  专栏  ›  技术社区  ›  y0mbo

需要调试提示:回发时的可见性更改只在一个页面上起作用,而不在另一个页面上起作用

  •  0
  • y0mbo  · 技术社区  · 14 年前

    我有一个包含用户控件的Web窗体。在那个用户控件上有一组单选按钮。当单选按钮更改时,将根据所选的单选按钮显示或隐藏面板和文本框。

    我可以举一个正确的例子:

    测试控制.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>
    

    测试控制.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;
        }
    }
    

    正如我提到的,在一个测试表单中,这是正常工作的。面板1和面板2根据选择的单选按钮正确显示。

    我有另一个网页和用户控件,还有许多其他字段。当此代码在该页上时,我可以单步执行ChoicesRadioButtonList_SelectedIndexChanged事件的代码隐藏,但不会发生任何事情。

    我对下一步调试这个(除了从头开始重新构建整个页面)感到茫然。有人能就去哪里看提出什么建议吗?

    3 回复  |  直到 14 年前
        1
  •  0
  •   Jaymz    14 年前

    是否尝试使用asp:multifiew而不是asp:panel?

    然后,不需要切换多个面板的可见性,只需要使用setActiveView(视图)来显示所需的视图。

        2
  •  0
  •   sh_kamalh    14 年前

    你能在预呈现事件中写同样的代码吗?可能是有什么东西将可见性更改回了默认状态,而您忽略了它。

        3
  •  0
  •   y0mbo    14 年前

    我浏览了一下,开始评论代码的各个部分。结果发现页面上的CalendarExtender导致了该问题。它抛出的javascript错误阻止了页面正确呈现。