我需要找到一种方法来隐藏HTML Rows(或Tables),而不会阻止它们被渲染。设置this.myTable.Visible = false似乎是从用户隐藏表的最简单方法,但它阻止HTML表被发送到浏览器并导致问题,因为我使用Validators并需要确保验证不可见元素(因为页面导航逻辑,一次只有一些元素对用户可见)。
我试图更改Style属性,但asp.net说它是只读的,所以我不能使用CSS使其不可见。此外,我宁愿不使用Javascript,但如果有一个简单的JS解决方案,那很好。
非常感谢任何帮助。
答案 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.style
或class
属性。
答案 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”