我很困惑。我有一个包含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的属性! 这件事发生在你之前吗?你是怎么解决的?
非常感谢!
答案 0 :(得分:2)
问题可能在于更新面板。
如果您尝试更新更新面板外部的内容,则需要指定将在面板的回发元素中更新面板的控件
<asp:PostBackTrigger ControlID="Button1" EventName="Click">
如果不指定触发器,则更新面板不会更新其中的属性。
答案 1 :(得分:0)
嗯,你的问题可能就在这里:
if (!Page.IsPostBack)
这会导致statement
内的if condition
仅运行一次 - 当页面
首先加载。
发布回发时(即按下按钮),将无法访问此语句。
尝试更改为
if (Page.IsPostBack)