将 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');
当我的 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');