将表推到屏幕上

本文关键字:屏幕 | 更新日期: 2023-09-27 18:01:48

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

$("#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) 
           {
                ;
           }
       });
 });

所以,我调用这个函数,它创建一个新的"页面"(因为它是静态的),并调用一个返回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#代码中有它,但我希望它在屏幕上,而不仅仅是在这里。

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

  tableauArticles = tableau;

但是我没有看到任何变化。我想我在页面中更新了一个表,我没有显示

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

将表推到屏幕上

执行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的东西工作。

答案是100% Raidri解决方案:

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