2010-08-10 41 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(); 
    }