隐藏服务器控件

时间:2011-01-05 15:47:56

标签: asp.net

如何从aspx.cs文件中隐藏位于我的aspx文件中的控件?

我有一个文本框和一个按钮,我的想法是当我按下按钮时,这些控件都会消失并出现动态控件。 基本上一种让它不可见的方法是在该按钮的点击事件中放置一些东西,还是有另一种方式?

或者是否有更好的方法来解决这个问题而不必让控件实际上“不可见”?

感谢。

3 个答案:

答案 0 :(得分:1)

在按钮的click事件的事件处理程序中,将所需的控件Visible属性设置为false。你也可以通过jquery完成这个,没有回发,即OnClientClick。

答案 1 :(得分:0)

修改

好的,下面的css方法将意味着您的控件仍然会呈现,但浏览器将使其无法访问,但仍会在标记中出现。如果你不想渲染那么设置可见为false,就像其他人提到的那样。

这是其中一种有很多方法可以去除这只猫的皮肤,这真的取决于你想要达到的目的:)

原帖

您可以将其cssClass更改为包含display:none;

的cssClass
<style type="text/css">
.ShowMyControl
{
  display:block;
}

.HideMyControl
{
  display:none;
}
</style>

然后在您的代码中,您可以在button_click上翻转样式...

MyControl.cssClass = "ShowMyControl";

或者

MyControl.cssClass = "HideMyControl";

您可能想要做的是将控件放在asp:Panel控件中,然后翻转Panel的cssClass而不是每个控件。这也会奏效。

这是基于您似乎正在使用的服务器端模型执行此操作的一种方法,但是,您可能希望查看使用AJAX调用&amp; JavaScript做动态显示&amp;隐藏在客户端。这可能不合适 - 这取决于你的设计模式

答案 2 :(得分:0)

您可以订阅按钮的服务器端Click事件,并将用户控件的Visible属性设置为false

protected void cmdHide_Click(object sender, EventArgs e)
{
    myCustomControl.Visible = false;
}

但是,这将导致您的自定义控件根本无法呈现。此外,由于您正在使用服务器端事件,因此将重新加载页面。

如果您不想重新加载页面,则可以使用Javascript隐藏它:

标记:

<asp:Button ID="cmdHide" Text="Hide" runat="server" />
<asp:Panel ID="myPanel" runat="server">
    <cust:MyCustomControl ... />
</asp:Panel>

代码隐藏:

cmdHide.OnClientClick = string.Format("document.getElementById('{0}').style.display = 'none'; return false;", myPanel.ClientID);

- 帕维尔