gpt4 book ai didi

c# - 如何在部分回发时更新 session 值以及如何使 Javascript 使用新值

转载 作者:行者123 更新时间:2023-11-28 10:59:41 24 4
gpt4 key购买 nike

我面临的问题是我将值传递给javascript以使用后面代码中的 session 值绘制图表。当页面加载时,它从 session 中获取值并创建图表,当我使用更新面板和计时器进行部分回发时,我调用该方法将值添加到 session 中,并且它会执行此操作。

public void messsagePercentStats(object sender, EventArgs args)
{
...
if (value >= lowtarg && value < Toptarg)
{
vProgressColor = "'#eaa600'";
}
else if (value >= Toptarg)
{
vProgressColor = "'#86cf21'";
}
Session.Add("vProgressColor", vProgressColor);
Session.Add("vProgressPercentage", "["+value+"],["+remaining+"]");
}
}

我使用更新面板来调用上述方法

<asp:ScriptManager ID="smCharts" runat="server" />

<asp:UpdatePanel runat="server" ID="Holder" OnLoad="messsagePercentStats" UpdateMode="Conditional">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="5000" OnTick="Timer_Tick" />

并且timer_tick方法每5秒执行一次

protected void Timer_Tick(object sender, EventArgs args)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "key", "r.init();", true);
ResponseMetric rm = new ResponseMetric();
Holder.Update();
}

我使用ScriptManager.RegisterStartupScript(this, this.GetType(), "key", "r.init();", true);调用r.init() Java 脚本方法在回发时绘制图形,效果很好。

Java 脚本:

 var r = {  
init : function(){
r = Raphael("pie"),

data2 = [<%= Session["vProgressPercentage"] %>];
axisx = ["10%", "20%"];
r.g.txtattr.font = "12px 'Fontin Sans', Fontin-Sans, sans-serif";
r.g.barchart(80, 25, 100, 320, data2, { stacked: true, colors: [<%= Session["vProgressColor"] %>,'#fff'] });
axis2 = r.g.axis(94, 325, 280, 0, 100, 10, 1);
}
}
window.onload = function () {
r.init();
};

此 Java 脚本不会从 session 中获取新值,而是在加载页面时使用旧值。如何更改代码以确保 JS 使用最新的 session 值。

最佳答案

我认为这种情况与这篇文章中提到的情况相同 http://jquerybyexample.blogspot.com/2010/07/jquery-does-not-work-properly-after.html

您可以尝试使用 ASP.NET AJAX 时可用的 pageLoad() 函数

关于c# - 如何在部分回发时更新 session 值以及如何使 Javascript 使用新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7647682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com