返回一个用ajax写的HtmlTable

时间:2009-06-24 13:18:52

标签: c# asp.net javascript ajax

我想以编程方式在Web服务的代码中构建一个HtmlTable / Table,并将其作为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”。

我怎样才能写出实际的表格?

5 个答案:

答案 0 :(得分:2)

您的代码唯一的问题是使用“tbl.ToString()”。

正如其他一些帖子所述,您应该使用HtmlTextWriter将表控件渲染到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。

答案 1 :(得分:0)

您可以在任何控件上调用RenderControl()方法。或者如果你没有使用HtmlTable做任何事情,那么构建HTML然后使用HtmlTextWriter。

答案 2 :(得分:0)

这里的问题是您使用的HtmlTable.ToString方法不适合您想要的方法。 'ToString'返回表示当前Object的String。在这种情况下,您必须先将Render表格放到HTMLTextWriter上,然后才能使用方法ToString

答案 3 :(得分:0)

只需使用tbl.InnerHtml,而不是ToString

答案 4 :(得分:0)

听起来你正在使它变得比它需要的更复杂。如何不使用HtmlTable对象,只是构建一个包含您需要输出的html的字符串。