将表格推送到屏幕

时间:2015-07-08 11:00:52

标签: c# asp.net ajax jstree

点击我的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) 
           {
                ;
           }
       });
 });

所以,我称这个函数为一个新的"页面" (因为它是静态的)并调用一个返回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";
}

这里的大问题:我的"画面"更新,我想要的东西(我用htmlWriter看到这一点),但是......我不知道怎么把它放在我的屏幕上! 我在我的C#代码中有它,但我希望它在屏幕上,而不仅仅是在这里。

我有" tableauArticle"这是一个真正的System.Web.UI.WebControls.Table,在我的ASP.net代码中。 我尝试了一些东西,比如把#table; ArticleauArticle"如静态,那么

  tableauArticles = tableau;

但我没有看到任何改变。我认为我在页面中更新了一个我不会显示的表格

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

2 个答案:

答案 0 :(得分:2)

您执行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,为您提供概述。

答案 1 :(得分:0)

对于答案,它是100%Raidri解决方案:

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