2

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

我试图更改 Style 属性,但 asp.net 说它是只读的,所以我不能使用 CSS 使其不可见。我也不想使用 Javascript,但如果有一个简单的 JS 解决方案就可以了。

任何帮助是极大的赞赏。

4

6 回答 6

3

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

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

或者

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

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

编辑:HTML 控件需要 runat="server" 才能工作,我假设你的控件是因为你能够设置 Visible 属性。

于 2009-01-13T20:41:06.430 回答
3

您可以制作<tr>s服务器标签。为此,请更改您的行

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

这样您就可以访问它们的属性,例如rowID.styleclass属性。

于 2009-01-13T20:41:24.323 回答
2

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

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

虽然,对于单行,这不起作用。您可能不得不使用一些 javascript(例如 jquery,正如另一位用户推荐的那样)。

于 2009-01-13T20:40:20.177 回答
0

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

于 2009-01-13T20:45:43.440 回答
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");

这使我可以显示或隐藏表格,而不会在隐藏时占用页面上的空白空间,但仍会渲染它们,以便它们在隐藏或显示时与验证控件(这是我的最终目标)一起使用。定义中的样式标签可能不是必需的,但由于它现在可以正常工作,我可能会留下它,因为它是在运行时修改的。

再次感谢您的洞察力!

于 2009-01-13T22:03:40.583 回答
0

伙计们甚至 table.Visible = False 作品前提是你已经为当然表设置了 runat="server"

于 2009-09-16T13:04:31.253 回答