C# 返回要使用ajax编写的HtmlTable
我希望以编程方式在webservice的代码隐藏中构建一个HtmlTable/表,并将其作为HTML字符串返回,这样就可以使用JavaScript将其写入span/div/的内部HTML 类似于以下内容:C# 返回要使用ajax编写的HtmlTable,c#,asp.net,javascript,ajax,C#,Asp.net,Javascript,Ajax,我希望以编程方式在webservice的代码隐藏中构建一个HtmlTable/表,并将其作为HTML字符串返回,这样就可以使用JavaScript将其写入span/div/的内部HTML 类似于以下内容: //webservice.amsx.cs Build the table, called by another/different method protected string Table_Maker() { HtmlTable tbl = new HtmlTable(); HtmlT
//webservice.amsx.cs Build the table, called by another/different method
protected string Table_Maker()
{
HtmlTable tbl = new HtmlTable();
HtmlTableCell cell = new HtmlTableCell();
HtmlTableRow row = new HtmlTableRow();
cell.InnerText = "WhateverText";
row.Cells.Add(cell);
tbl.Rows.Add(row);
return tbl.ToString();
}
//somepage.aspx write table to the div
function menuHelper(toplayer, toplayernumber)
{
var sublayertable;
var sublayerpostcompileID;
var toplayernumber;
menuHelper_Part1();
function menuHelper_Part1()
{
//replace ucMainMenu with ucMainMenu_pnlContent
sublayerpostcompileID = toplayer.replace("ucMainMenu", "ucMainMenu_pnlContent");
//Call the webmethod
webbernetz.MenuHelperWebService.Sub_Menu_Helper(toplayernumber, menuHelper_Part2);
}
function menuHelper_Part2(result){
//Write the result to the target area
document.getElementById(sublayerpostcompileID).innerHTML = result;
}
}
当我将其返回到javascript时,javascript只写“System.Web.UI.HtmlControls.HtmlTable”
如何让它编写实际的表?有一个
RenderControl()
方法,您可以调用任何控件。或者,如果您没有使用HtmlTable
来处理它,而不是构建HTML,那么请使用HtmlTextWriter
这里的问题是您使用的HtmlTable.ToString
方法不适合您想要的内容。”ToString'返回表示当前对象的字符串。在这种情况下,您必须先将表呈现给HTMLTextWriter,然后您可以使用方法ToString
只需使用tbl.InnerHtml,而不是ToString听起来您让它变得比需要的更复杂。不使用HtmlTable对象,只构建一个包含需要输出的html的字符串怎么样。代码的唯一问题是使用tbl.ToString()
正如在其他一些文章中提到的,您应该使用htmltexwriter
将表控件呈现给StringBuilder
对象,然后该对象可以为您的方法返回字符串值。大概是这样的:
protected string Table_Maker() {
HtmlTable tbl = new HtmlTable();
HtmlTableCell cell = new HtmlTableCell();
HtmlTableRow row = new HtmlTableRow();
cell.InnerText = "WhateverText";
row.Cells.Add(cell);
tbl.Rows.Add(row);
StringBuilder sb = new StringBuilder();
using( StringWriter sw = new StringWriter( sb ) ) {
using( HtmlTextWriter tw = new HtmlTextWriter( sw ) ) {
tbl.RenderControl( tw );
}
}
return sb.ToString();
}
这将返回要插入页面的HTML。请给我一个例子好吗?请给我一个使用HtmlTextWriter的例子好吗?