将 Table 推送到屏幕

Push Table to screen

当我的 JSSTree 的一个分支被点击时,我有一个 AJAX 请求

$("#jstree").bind("select_node.jstree", function(evt, data)
 {      
      var idArgument = data.node.text;
      $.ajax(
      {
           type: "POST",
           url: "WebForm1.aspx/brancheSelectionnee",
           data: JSON.stringify({ id: idArgument }),
           contentType: "application/json; charset=utf-8",
           success: function(msg) 
           {
                ;
           }
       });
 });

所以,我调用这个函数,它创建一个新的 "page"(因为它是静态的)并调用一个 return 一个 System.Web.UI.WebControls.Table.

的函数
public static string brancheSelectionnee(string id)
{
    var page = (WebForm1)HttpContext.Current.CurrentHandler;
    System.Web.UI.WebControls.Table tableau = page.brancheSelectionneeNonStatique(id);

   var stringWriter = new StringWriter();
   using (var htmlWriter = new HtmlTextWriter(stringWriter))
   {
       tableau.RenderControl(htmlWriter);
   }
   string tableauString=stringWriter.ToString();
   return "randomstring";
}

这里有一个大问题:我的 "tableau" 已更新,我想要什么(我用 htmlWriter 看到了这个)但是..我不知道如何把它放在我的屏幕上! 我的 C# 代码中有它,但我希望它出现在屏幕上,而不仅仅是这里。

我的 ASP.net 代码中有 "tableauArticle",这是一个真正的 System.Web.UI.WebControls.Table。 我尝试了一些东西,比如将 "tableauArticle" 设为静态,然后

  tableauArticles = tableau;

但我没有看到任何变化。我认为我在不显示

的页面中更新了一个 table

我认为主要问题是我的页面没有刷新或者我 table 做错了。

你做了一个AJAX请求,所以没有页面刷新。您只需从服务器方法返回一个字符串(带有 HTML)。然后您必须手动将该字符串放在您的页面上。这发生在 success 回调函数中,该函数在您的代码中为空。作为第一步尝试这样的事情:

success: function(msg) 
{
    $('<div class="newtable">').html(msg).appendTo('body');
}

在服务器端,您的方法 brancheSelectionnee 需要 AjaxMethod 属性,以便可以使用 AJAX:

调用它
[Ajax.AjaxMethod()]
public static string brancheSelectionnee(string id)

(它也应该 return tableauString; 而不是 "randomstring",对吗?我不确定你是否可以在那里使用 HttpContext.Current.CurrentHandler,但这是第二步,如果基本 AJAX 东西有效。)

这里有一个 tutorial 可以为您提供一个概览。

答案为100% Raidri解决方案:

 $('#tableauArticles').empty();
 $('<div class="newtable">').html(msg.d).appendTo('#tableauArticles');