【问题标题】:Access html control from server side从服务器端访问 html 控件
【发布时间】:2009-05-29 08:08:39
【问题描述】:

如何从 asp.net 中的代码访问 html 控件。我不想使用“runat=server”,因为它会导致问题。

我创建了一个空的 html 表,我想从后面的代码中添加

请帮忙。

谢谢, 普拉奇

【问题讨论】:

  • 请显示一些代码。代码隐藏以及页面的 html 部分会有所帮助。
  • 我正在 aspx 中创建一个 html 表,如下所示。
    现在我想从 .cs 文件中向该表添加列。我将从数据库中检索值以制作 tds。如何检索控件?
  • 它会导致什么问题??

标签: asp.net html


【解决方案1】:

如果没有 runat="server",这是不可能的。

你说这引起了问题。请说出它造成了什么问题。


您说您正在使用 getElementById 访问表?服务器控件的 ID 根据它所在的控件而变化。您需要获取更改后的 ID 才能使用:

var tab = getElementById("<%= myTable.ClientId %>");

或类似的东西。

【讨论】:

  • 目前我正在使用以下代码通过javascript添加td var tblHeadObj = window.opener.document.getElementById"maintable").tHead;但是在使其运行在服务器之后,它会抛出错误,例如:jscript error:object expected.
  • 有可能。查看我的解决方案
【解决方案2】:

如果你想在代码后面访问它,你应该使用 runat=server 属性。

但也许您可以生成一些 javascript 代码,将 td/tr 添加到代码隐藏的表格中。您可以将它注册到您的页面以在启动时运行。

【讨论】:

    【解决方案3】:

    runat="服务器"

    对于 table 和 tr 元素,后面的代码无法访问它们(因为这告诉框架将元素公开给服务器)。

    你实际上想做什么?您看过DataGridGridView 还是简单的Repeater 控件?这些允许您定义一个表结构并向其动态添加控件(通常通过数据绑定,尽管有一些方法可以将项目添加到他们的 ItemCollections)。

    【讨论】:

      【解决方案4】:

      可以这样做的一种方法是添加一些内联脚本和公共字符串变量。在后面的代码中,创建一个公共类级变量:

      public String myColumns
      

      然后在您的 Page_Load 事件中,将您的 HTML 创建为字符串并将其保存在您的 myColumns 变量中:

      protected void Page_Load() {
      //do stuff
      myColumns = someStringWithTDTagsInIt
      }
      

      然后在您的 .aspx 页面中,执行以下操作:

      <table id=maintable"><tr><%=myColumns %></tr></table>
      

      它应该在您的 Page_Load 事件(或任何您想要的事件,如果您希望它在单击按钮或其他东西时加载)中呈现您想要的 HTML,而不使用“runat=server”标签。

      请注意,这不是推荐实现此目的的方法(控件通常更有效),但这应该是您提出的问题的有效解决方案。

      【讨论】:

        【解决方案5】:

        简单的例子。

        只需放置 runat="server" 即可访问。

        html 控件无法在服务器端访问。如果您放置 runat 服务器,则它会在服务器中访问。

        【讨论】:

          猜你喜欢
          • 2011-08-08
          • 1970-01-01
          • 2012-03-01
          • 1970-01-01
          • 2016-04-04
          • 2020-07-22
          • 2011-03-24
          • 1970-01-01
          • 2015-03-24
          相关资源
          最近更新 更多