添加runat = server时表中出错

时间:2012-09-27 06:07:17

标签: c# asp.net .net html-table runatserver

我的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

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

6 个答案:

答案 0 :(得分:4)

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

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

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

我是否需要解决此客户端或服务器端?

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

答案 1 :(得分: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>

答案 2 :(得分:0)

我认为你可以将它用于同一目的

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

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

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

此外,如果我们删除tbody元素,它将不会因td不匹配而抛出错误 尼基尔米塔尔

答案 5 :(得分:0)

删除以下元素

<thead>
</thead>
<tbody>
</tbody>