2010-08-10 33 views
3

我有我的ASP.net頁是這樣的一個表:ASP.NET獲取表HTML

<table runat="server" id="resultsTable"></table> 

我動態地添加內容表,它工作得很好。不過,我想表的HTML一旦我已經添加了動態內容,即是這樣的(格式並不重要,我只是添加)

<table runat="server" id="resultsTable"> 
    <tr> 
    <td>Hello!</td> 
    </tr> 
    <tr> 
    <td>Goodbye!</td> 
    </tr> 
</table> 

我需要的結果作爲一個字符串。顯然,我可以做一些循環,並用數據構建我自己的表格,但如果可能,我寧願不這樣做。

+0

你需要在每個單元格的內容,或整個桌子? – sgriffinusa 2010-08-10 17:06:12

+0

整個表格,HTML和所有 – 2010-08-10 17:07:26

回答

0

嗯。在表單獲得發佈之前,我會將表標記添加到某個隱藏字段(這是一個服務器控件)。

<div id="tablediv"> 
<table>...</table> 
</div> 

的javascript:

var html = document.getElementById('tablediv').innerHTML; 
document.getElementById('hfTableHtml').value = html; 

編輯:是的,我擔心的事情發生了請求驗證!你必須禁用它或者將其存儲到隱藏字段

0

因爲你的表是一個服務器控件,您可以使用它RenderControl方法來獲取渲染之前替代這些標記元素瓦特/別的結果:

public static string GetRenderResult(Control control) { 
     using(StringWriter sw = new StringWriter(CultureInfo.InvariantCulture)) { 
      using(HtmlTextWriter writer = new HtmlTextWriter(sw)) 
       control.RenderControl(writer); 
      sw.WriteLine(); 
      return sw.ToString(); 
     } 
    } 
0

有幾種方法我可以考慮如何做到這一點。簡單的方法就是在桌子周圍環繞。然後在你的VB/C#端簡單地調用hold.innerhtml,它會返回一個字符串。

+0

不幸的是,這不起作用,「因爲內容不是字面的。」 – 2010-08-10 17:38:14

0

我用我的網頁OnLoad方法下你的錶轉換爲HTML的字符串:

string html; 
    using (var writer = new StringWriter()) 
    using (var xmlwriter = new HtmlTextWriter(writer)) 
    { 
     this.resultsTable.RenderControl(xmlwriter); 
     html = writer.ToString(); 
    }