0

对于 ASP.Net,我知道我可以制作许多不同的 HTML 元素 runat="server",因此我可以从服务器对其执行特定的操作,但我无法获得 runat="server" 的 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;

更新:

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

4

2 回答 2

0

这可能是一个额头拍打,但是:

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

于 2012-05-04T21:39:02.220 回答
0

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

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

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

test.ColSpan = 2;

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

于 2012-05-04T22:32:05.227 回答