我的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
这里有什么想法可能有问题吗?我错过了什么吗?
答案 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>