3

我的 ASPX 页面中有一个 html 表,并希望在代码隐藏中使用它进行一些处理。该表如下所示:

<table class="hovertable" id="tblData">
    <tr>
        <th>ID:</th>
        <td colspan="3" style="font-weight: bold">
            <%= Eval("ID") %>
        </td>
    </tr>
    <tr>
        <th>Date:</th>
        <td><%# Eval("Date", "{0:dd-MMM-yyyy}") %></td>
        <th>Amount:</th>
        <td><%# Eval("Amount", "{0:C}") %>
    </tr>
</table>

但是,当我将 runat="server" 属性添加到表中时,会出现以下错误:

CS1502: The best overloaded method match for 'System.Web.UI.HtmlControls.HtmlTableRowCollection.Add(System.Web.UI.HtmlControls.HtmlTableRow)' has some invalid arguments

任何想法这里可能有什么问题?我错过了什么吗?

4

6 回答 6

4

html 表(不是纯 asp.net 服务器控件)不能包含 asp.net 服务器控件。看看这个答案:

http://forums.asp.net/t/1524580.aspx/1

在我看来,您应该问自己以下问题吗?

我需要解决这个客户端或服务器端吗?

如果您的答案是客户端,您应该使用 Ajax 实现更新逻辑,否则您可以使用 ASP.NET 服务器控件并在服务器端实现它。

于 2012-09-27T06:10:09.067 回答
4

好的,我已经自己解决了这个问题。导致它的问题是因为<td>没有相应的<tr>元素。如下所示:

<table class="hovertable" id="tblData">
    <tr>
        <th>ID:</th>
        <td colspan="3" style="font-weight: bold">
            <%= Eval("ID") %>
        </td>
    </tr>
    <tr>
        <th>Date:</th>
        <td><%# Eval("Date", "{0:dd-MMM-yyyy}") %></td>
        <th>Amount:</th>
        <td><%# Eval("Amount", "{0:C}") %>
    </tr>
    <td colspan='4'>
       Some data....
    </td>
</table>
于 2012-10-01T04:54:49.167 回答
0

我认为您可以将其用于相同的目的

<asp:Table ID="Table1" runat="server">
</asp:Table>

您要做的是向控件添加runat="server"属性HTML

于 2012-09-27T06:10:30.750 回答
0

尝试添加<asp:Labels>需要操作数据的位置。

<table>
<tr><td><asp:Label id="lblRow" runat="server" /></td></tr>
</table>

如果标签中有,则无法通过代码后面runat="server"的代码访问表列和行,因为它们是纯 html。

另一种方法是使用 aStringBuilder在代码隐藏中创建 html 表并asp:LiteralControl输出该表。

于 2012-09-27T06:12:49.453 回答
0

此外,如果我们删除 tbody 元素,它不会因为 td mismatch Nikhil Mittal 引发错误

于 2015-06-12T07:57:01.527 回答
0

删除以下元素

<thead>
</thead>
<tbody>
</tbody>
于 2017-03-20T07:04:29.303 回答