Возвращение HtmlTable для записи с помощью ajax - PullRequest
0 голосов
/ 24 июня 2009

Я хотел бы программно построить HtmlTable / Table в коде веб-сервиса и сделать так, чтобы он возвращался в виде строки HTML, чтобы его можно было записать с помощью JavaScript во innerhtml span / div / what

Что-то похожее на следующее:

//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 ]

2 голосов
/ 25 июня 2009

Единственная проблема с вашим кодом - использование "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-код для вставки на вашу страницу.

0 голосов
/ 25 июня 2009

Звучит так, будто вы делаете это более сложным, чем нужно. Как насчет того, чтобы не использовать объект HtmlTable и просто создать строку, содержащую HTML, который нужно вывести.

0 голосов
/ 24 июня 2009

Проблема в том, что метод HtmlTable.ToString, который вы используете, не подходит для того, что вы хотите. ToString возвращает строку, которая представляет текущий объект. В этом случае вам нужно Render для таблицы сначала обратиться к HTMLTextWriter, а затем использовать метод ToString.

0 голосов
/ 24 июня 2009

Просто используйте tbl.InnerHtml вместо ToString

0 голосов
/ 24 июня 2009

Существует метод RenderControl (), который можно вызывать для любого элемента управления. Или, если вы не используете HtmlTable для каких-либо действий, кроме построения HTML, используйте HtmlTextWriter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...