Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回要使用ajax编写的HtmlTable_C#_Asp.net_Javascript_Ajax - Fatal编程技术网

C# 返回要使用ajax编写的HtmlTable

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的代码隐藏中构建一个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();
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的例子好吗?