2009-06-24 3 views
0

私はプログラムでHTMLサービスのコードビハインドにHtmlTable/Tableを構築し、それをJavaScriptのinnerhtmlに書き込むことができるようにHTMLの文字列として返すようにします次のようなスパン/ DIV /何でもajaxで書かれるHtmlTableを返す

何か:私はジャバスクリプトJavaScriptにそれを返すとき

//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; 
    } 
} 

単に "System.Web.UI.HtmlControls.HtmlTable" を書き込みます。

実際のテーブルを書くにはどうすればいいですか?

+1

ここに質問がありますか? – tvanfosson

+0

そして、質問は? – Kirschstein

答えて

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を返す必要があります。

+0

ありがとうございました。 – aggitan

0

任意のコントロールで呼び出すことができるRenderControl()メソッドがあります。または、HtmlTableを使用してそれ以外のものを実行していない場合は、HTMLを構築してからHtmlTextWriterを使用します。

+0

HtmlTextWriterを使用した例がありますか? – aggitan

+0

http://dotnetperls.com/htmltextwriter – epitka

0

ここで問題となるのは、使用しているHtmlTable.ToStringメソッドが適切でないということです。 'ToString'は現在のObjectを表すStringを返します。この場合は、最初にRenderにHTMLTextWriterを設定してから、ToStringというメソッドを使用する必要があります。あなたはそれが必要以上に、それはより複雑になっているよう

+0

私に例を挙げてもらえますか? – aggitan

0

だけではなく、ToStringメソッド

0

の、tbl.InnerHtmlを使用するには、サウンド。 HtmlTableオブジェクトを使用せず、出力する必要があるhtmlを含む文字列を作成するのはどうでしょうか?

関連する問題