点击我的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;
但我没有看到任何改变。我认为我在页面中更新了一个我不会显示的表格
我认为主要的问题是我的页面没有刷新,或者我的表格出错了。
答案 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');