2012-09-27 61 views
3

我在我的ASPX頁面中有一個html表格,並希望在代碼隱藏中使用它進行一些處理。該表如下所示:添加runat = server時出現錯誤

<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

好吧,我自己解決了這個問題。導致它的問題是因爲<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> 
+0

我的代碼昨晚工作,但不是今天早上。 ??? 'table id =「whatever」runat =「server」>'應該沒問題。這就是微軟在[他們的例子]中所說的做法(https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.layouttemplate.aspx)。 – jp2code

4

html表(不是純粹的asp.net服務器控件)不能包含asp.net服務器控件。看看這個答案:

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

在我看來,你應該問自己以下問題?

我需要解決這個客戶端或服務器端嗎?

如果你的答案是客戶端,你應該使用Ajax實現更新邏輯,否則你可以使用ASP.NET服務器控件並實現它服務器端。

+0

有趣的是,我在另外兩個aspx頁面中嘗試了同樣的事情,它可以工作。但不是在這個特定的頁面。 –

+0

@ConfusedProgrammer這聽起來像「它適用於我的機器?」。 –

+0

@ConfusedProgrammer我指的是你的「特定頁面」評論。也許這個特定的頁面會從你現在實施的頁面推遲,我看不到。事實是,你試圖在html表格中使用服務器控件,這是行不通的。我不打算成爲一個硬派,只是想幫助你! –

0

我認爲你可以用這個相同的目的

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

你所要做的是增加runat="server"屬性的HTML控制

+1

''是WebControls版本,而'

'是HtmlControls版本。兩者之間存在着渲染差異。 – Dai

+0

我可以,但我有堆大量的行和列需要更改和消耗大量時間的表。因此,我將runat = server快速訪問。 –

0

嘗試增加<asp:Labels>,你需要處理的數據。

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

表列和行無法通過後面的代碼,如果你有runat="server"的標籤,因爲他們是純HTML訪問。

另一種方法是使用StringBuilder在代碼隱藏中創建html表,並輸出表asp:LiteralControl

+0

嗨,我的實際目的是呈現表格的html輸出,並將其放在郵件正文中,然後發送它。 –

0

此外,如果我們去掉它不會引發錯誤的TD不匹配tbody元素 尼基爾·米塔爾

0

刪除以下元素

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