Я пытаюсь создать страницу asp. net, которая отображает данные, полученные из Google Analytics API, и отображает их в Google Charts. Об этой части кое-что уже позаботилось, но теперь я хочу, чтобы она регулярно обновляла sh, скажем, с 10 se c. интервал. Страница наследуется от MasterPageFile (например, панель навигации) fyi
Она сделана с
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/2018.master" AutoEventWireup="true" CodeFile="Googlytics.aspx.cs" Inherits="Admin_Default" %>
<asp:Content>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Timer runat="server" ID="Timer1" Interval="10000" Enabled="true" OnTick="Timer1_Tick"></asp:Timer>
<asp:HiddenField ID="hfgauge" ClientIDMode="Static" runat="server" />
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
$(document).ready(function () {
drawAndMakeCharts();
});
-- js code for charts here --
(parseInt(document.getElementById('hfgauge').value) -- Used in the charts.
-- closing all --
Я использую HiddenField в качестве держателя значения для того, что я вводю в диаграммы.
Сценарий:
<script runat="server">
protected void Timer1_Tick(object sender, EventArgs e)
{
test1 += 1;
hfgauge.Value = "" + test1;
RegisterClientStartupScript("drawAll", "drawAndMakeCharts();");
}
protected void RegisterClientStartupScript(string scriptKey, string scriptText)
{
ScriptManager sManager = ScriptManager.GetCurrent(this.Page);
if (sManager != null && sManager.IsInAsyncPostBack)
{
//if a MS AJAX request, use the Scriptmanager class
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), scriptKey, scriptText, true);
}
else
{
//if a standard postback, use the standard ClientScript method
scriptText = string.Concat("Sys.Application.add_load(function(){", scriptText, "});");
this.Page.ClientScript.RegisterStartupScript(this.GetType(), scriptKey, scriptText, true);
}
}
</script>
RegisterClientStartupScript фактически запускает серверную часть, но я не уверен, имеет ли это значение. Он работает в частичном классе: System.Web.UI.Page
Все это «работает» в том смысле, что оно загрузит и покажет все диаграммы, затем обновит и покажет новые диаграммы один раз. После этого он перестает обновлять значения, но, похоже, продолжает обновлять графики.