2009-01-13 39 views
2

我需要找到一种方法来从视图中隐藏HTML行(或表),而不会阻止它们呈现。设置this.myTable.Visible = false似乎是向用户隐藏表格的最简单方法,但它阻止了HTML表格被发送到浏览器,并导致一个问题,因为我正在使用验证器并需要确保验证不可见元素(因为页面导航逻辑,一次只有一些元素会对用户可见)。ASP.NET 2.0 HtmlTable行 - 隐藏不隐形

我试图改变Style属性,但asp.net说它是只读的,所以我不能使用CSS隐藏它。此外,我宁愿不使用Javascript,但如果有一个简单的JS解决方案,那很好。

任何帮助,非常感谢。

回答

2

要隐藏一个完整的表(但仍呈现到客户端),在风格=一个div包装它“显示:无”:

<div style="display:none;"> 
asp.net table goes here 
</div> 

虽然,单排,这是行不通。您可能需要使用一些javascript(例如jquery,如推荐的其他用户)。

3

您可以通过将显示属性添加到样式集合来设置此服务器端。样式集合属性本身是只读的(不能替换它),但是您可以通过一个元素来反映设置该样式属性。

table.Style.Add("display","none") 

table.Style["display"] = "none"; 

的样式集是从HtmlGenericControl继承这同样适用于表行真。

编辑:HTML控件需要runat =“server”才能正常工作,我假设你是因为你可以设置Visible属性。

3

您可以使您的<tr> s 服务器标签。要做到这一点,改变你的行中

<tr id="rowID" runat="server"> 

所以,你可以访问他们的属性,如rowID.styleclass性能。

0

除了使用样式属性外,您始终可以将样式放置在元素上的元素上,或者通过element.Attributes["style"] = "display: none;";将其放置在元素上。要在代码中执行此操作,您需要通过添加runat="server"并设置ID来使其成为服务器控件。

0

感谢您的有用信息家伙。我实际上可以结合两个较早的答案来提出一个很好的解决方案。仅供参考这里是:

我用的桌子周围div标签,我想显示和隐藏,如:

Definition: 
    protected System.Web.UI.HtmlControls.HtmlGenericControl tblHideItems1; 

To show: 
this.tblHideItems1.Style.Add("display", "inline"); 

To hide: 
this.tblHideItems1.Style.Add("display", "none"); 

<div style="display:none;" id="tblHideItems1" runat="server"> 

我在代码中隐藏这样引用这些这使我可以显示或隐藏表格,而不会在页面被隐藏时占用空白区域,但仍可渲染它们,以便在隐藏或显示时使用验证控件(这是我的最终目标)。 定义中的样式标记可能不是必需的,但由于它现在可以正常工作,因此可能会在运行时修改它,所以我可能会将其保留。

再次感谢您的洞察!

0

人甚至table.Visible =假作品 提供 u've设定为表RUNAT =“服务器” ofcourse

+0

的[Control.Visible属性] [1]确定控制是否应该被发送到HTML渲染引擎。如果你设置table.Visible = false,那么表格将不会通过ASP.NET渲染,不会通过IIS,并且不会传递给最终用户。 n2009需要最终用户为验证器获取表格。 Style =“display:none”将进入浏览器渲染引擎。 – 2013-01-31 22:41:08