【问题标题】:ASP.NET 2.0 HtmlTable Rows - hiding without making invisibleASP.NET 2.0 HtmlTable 行 - 隐藏而不隐藏
【发布时间】:2010-10-01 05:45:01
【问题描述】:

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

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

非常感谢任何帮助。

【问题讨论】:

    标签: html asp.net html-table


    【解决方案1】:

    伙计们甚至 table.Visible = False 作品 假如 你已经为课程表设置了 runat="server"

    【讨论】:

    • [Control.Visible 属性][1] 确定是否应将控件发送到 HTML 呈现引擎。如果您设置 table.Visible=false,则该表将不会通过 ASP.NET 渲染,不会通过 IIS,也不会到达最终用户。 n2009 需要最终用户为验证者获取表。 Style="display:none" 将进入浏览器渲染引擎。
    • 链接应该是Control.Visible property
    【解决方案2】:

    感谢您提供有用的信息。我实际上能够结合两个较早的答案来提出一个很好的解决方案。供参考:

    我在我想显示和隐藏的表格周围使用了 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");
    

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

    再次感谢您的洞察力!

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

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

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

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            你可以让你的&lt;tr>s 服务器标签。为此,请更改

            中的行
            <tr id="rowID" runat="server">
            

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-11-28
              • 1970-01-01
              • 1970-01-01
              • 2014-06-12
              • 2014-04-23
              • 2011-04-16
              • 1970-01-01
              相关资源
              最近更新 更多