将aspx表的可见性设置为true失败

时间:2011-12-05 10:16:05

标签: c# asp.net

我很困惑。我有一个包含3个表格的webform。我想根据某些条件显示/隐藏它们。除了一种情况外,一切正常。

这就是我所拥有的:

<asp:UpdatePanel ID="upGeneral" runat="server" >
    <ContentTemplate>

        <table id="tab1" runat="server" visible="true" width="100%">
           ...
        </table>
        <table id="tab2" runat="server" visible="false" width="100%">
           ...
        </table>
        <table id="tab3" runat="server" visible="false" width="100%">
           ...
        </table>
    </ContentTemplate>
</asp:UpdatePanel>

然后,我在页面上添加了几个按钮,根据按下哪个按钮,我将更改表格的可见性。 我的问题是,在某些条件下,我将tab3的可见性改为true,而tab1和tab2为false,而tab1将其可见性设置为false,tab3不会将其可见性设置为true ...叹息!

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        ...
        if (!editMode)
        {
            tab1.Visible = false;
            tab2.Visible = false;
            tab3.Visible = true;
        }
     }
}

在调试模式下,当我查看这些说明时,tab3.visibile = true将不会更改tab3的属性! 这件事发生在你之前吗?你是怎么解决的?

非常感谢!

2 个答案:

答案 0 :(得分:2)

问题可能在于更新面板。

如果您尝试更新更新面板外部的内容,则需要指定将在面板的回发元素中更新面板的控件

<asp:PostBackTrigger ControlID="Button1" EventName="Click">

如果不指定触发器,则更新面板不会更新其中的属性。

答案 1 :(得分:0)

嗯,你的问题可能就在这里:

 if (!Page.IsPostBack)

这会导致statement内的if condition仅运行一次 - 当页面 首先加载。

发布回发时(即按下按钮),将无法访问此语句。

尝试更改为

if (Page.IsPostBack)