ASP.NET 2.0 HtmlTable Rows - 隐藏而不会隐藏

时间:2009-01-13 20:33:56

标签: html asp.net html-table

我需要找到一种方法来隐藏HTML Rows(或Tables),而不会阻止它们被渲染。设置this.myTable.Visible = false似乎是从用户隐藏表的最简单方法,但它阻止HTML表被发送到浏览器并导致问题,因为我使用Validators并需要确保验证不可见元素(因为页面导航逻辑,一次只有一些元素对用户可见)。

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

非常感谢任何帮助。

6 个答案:

答案 0 :(得分:3)

您可以通过向样式集合添加display属性来设置此服务器端。样式集合属性本身是只读的(您无法替换它),但您可以使用它的元素来反映该样式属性的设置。

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

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

对于表行也是如此,因为Style集合是从HtmlGenericControl继承的。

编辑:HTML控件需要运行=“server”才能生效,我假设你的是因为你可以设置Visible属性。

答案 1 :(得分:3)

您可以制作<tr&gt; 服务器代码。为此,请在

中更改行
<tr id="rowID" runat="server">

因此,您可以访问其属性,例如rowID.styleclass属性。

答案 2 :(得分:2)

要隐藏一个完整的表(但仍然将其呈现给客户端),请将其包装在一个div中,并使用style =“display:none”:

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

虽然对于单行,但这不起作用。你可能不得不使用一些javascript(例如jquery,另一个用户推荐)。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

感谢有用的信息人员。我能够实际结合两个早期的答案来提出一个很好的解决方案。这里的参考是:

我在表格中使用了div标签,我想要显示和隐藏:

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

我在代码隐藏中引用了这些,如下所示:

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

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

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

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

再次感谢您的见解!!

答案 5 :(得分:0)

伙计甚至是table.Visible = False有效 提供 你已经为表格设置了runat =“server”