【问题标题】:Why can't I make a TH runat="server"为什么我不能做一个 TH runat="server"
【发布时间】:2012-05-05 06:32:05
【问题描述】:

对于 ASP.Net,我知道我可以制作许多不同的 HTML 元素 runat="server",因此我可以从服务器对其执行特定的操作,但我无法获得 runat=" 的 TH服务器”。

为什么不呢?

示例:

<table>
<tr>
<td id="tdMyCell" runat="server"></td>
<th id="thMyCell" runat="server"></th>
</tr>
</table>

但从服务器端,我只能访问 TD。我尝试了下面两行,第一行不会编译,第二行总是返回一个空对象。

thMyCell.Visible = false;
(this.FindControl("thMyCell") as System.Web.UI.HtmlControls.HtmlTableCell).Visible = false;

更新:

我的错,我复制了一些东西,在发布之前我没有更改它......它已在代码中修复

【问题讨论】:

  • 标记中没有 thLastColumn
  • 代码隐藏中声明的th(自动)是什么类型? 编辑:作为 TableCell,thMyCell.Visible=false 有效。
  • 看起来好像您没有给出所有标记的示例。将runat="server" 添加到&lt;th&gt;&lt;td&gt; 将编译(假设ID 是正确的;))

标签: asp.net


【解决方案1】:

这可能是打额头,但是:

因为您的 th 被称为“thMyCell”,而不是“thLastColumn”

【讨论】:

  • 对不起,我刚刚复制了代码,设置错误。如果我的名字正确,还是不行
  • 原来有人创建了一个巨大的中继器,而 TH 位于标题模板中......难怪它在后面的代码中的普通方法中看不到......啊......
【解决方案2】:

如果您的实现与您的示例一样简单,那么您应该对此有疑问。它没有给我任何问题,并且编译没有任何错误。

<table>
    <tr>
        <th id="test" runat="server"></th>
    </tr>
</table> 

在代码隐藏中,intellisense 将其选为HtmlTableCell,但这应该不是问题:

test.ColSpan = 2;

如果这对您不起作用,我会尝试将其隔离 - 创建一个新的 Web 表单并粘贴我上面的标记,然后尝试在代码隐藏中访问它。 Intellisense 应该可以毫无问题地获取它,并且表单应该可以正常编译。

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 2020-08-05
    • 2018-06-29
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    相关资源
    最近更新 更多