asp.net – Panel visible = true没有任何效果

前端之家收集整理的这篇文章主要介绍了asp.net – Panel visible = true没有任何效果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个面板,我明确设置visible = true。调试器通过该行,可见仍然在下一行评估为False。显然,小组没有显示。这怎么可能?
pnlValidate.Visible = true;
if (IsPostBack) return;

<asp:Panel ID="pnlValidate" runat="server">
    <asp:Button cssclass="submit2" ID="btnValidate" runat="server" Visible="false" text="Validate" OnClick="btnValidate_Click" /> <br />
    <asp:TextBox ID="txt6sql" runat="server" Visible="false" TextMode="multiLine" Width="500" Height="200" ReadOnly="true" ToolTip="Report sql Statement" />
</asp:Panel>

alt text http://www.kconnolly.net/pics/visiblefalse.jpg

ASP.NET 2.0,没有其他线程或者是“应该”搞乱我的会员。

解决方法

您的面板是否嵌套在另一个面板或任何其他类型的容器中,Visible设置为false?

对于这种情况,您观察到的行为是可重现的。如果外部容器是不可见的,则禁止将内部容器的可见性设置为true,因为这意味着内部任何内容都不可见,即使不是内部面板的空白div也是有意义的。

Visible属性似乎取决于外部容器的可见性,例如:

<asp:Panel ID="Panel0" runat="server" Visible="false">
    <asp:Panel ID="Panel1" runat="server" Visible="false">
        Content...
    </asp:Panel>
</asp:Panel>

这个代码是如预期的(使外部容器首先可见,然后是内部容器):

Panel0.Visible = true;
// Now Panel0.Visible returns true and Panel1.Visible returns false
Panel1.Visible = true;
// Now Panel0.Visible returns true and Panel1.Visible returns true

这段代码有点令人惊讶(使内部容器首先看到,然后是外部容器):

Panel1.Visible = true;
// Now Panel1.Visible returns false (!,your issue) and Panel0.Visible returns false
Panel0.Visible = true;
// Now Panel1.Visible returns true (!!) and Panel0.Visible returns true

似乎设置和获取Visible属性是“不对称”:Setter似乎在控件中放置一个标志,但是Getter返回一个取决于外部元素的可视性和控件本身的可见性的计算值。

不知道这是否会帮助你。

猜你在找的asp.Net相关文章