在 post 返回 .ascx 页面中将数据传递给客户端 (javascript)

Passing Data to client side (javascript) in post back in .ascx page

ascx页面中有devExpress dxchart。

asp:UpdatePanel ID="UpdatePanel1" runat="server"  UpdateMode="Conditional">
   <ContentTemplate>
    <br />
        <div id="trendChart" style="height: 500px;   width: 100%;"> </div>
    <br />
   </ContentTemplate>
</asp:UpdatePanel>

数据在 Page_Load 方法中加载正常。但是当使用按钮点击并且图表数据没有得到更新时。它显示旧值,如 Page_Load.In 按钮单击使用以下代码。

    NewData = jsonData

 System.Web.UI.ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "ANY_KEY" + 
 Guid.NewGuid.ToString, "UpdateChart();", True)

'NewData' 是 public 属性。 javascript中的UpdateChart如下。

function UpdateChart()
{
  myData = '<%= NewData%>';
  alert('tesing');
  var parseObj = JSON.parse(myData);
  $(function () {
    $("#trendChart").dxChart({
        dataSource: parseObj,
        series: {
            argumentField: "Month",
            valueField: "Value",
            name: "Value",
            type: "bar",
            color: '#ffaa66'
        }
    });
  });
}

单击按钮后 'NewData' 在 UpdateChart() 中没有任何内容(javascript)并且图表仍然显示旧值。

您可以将数据作为 UpdateChart 函数的 属性 传递,然后对您的代码进行一些其他调整。
首先创建一个 init-dxChart-function。可以在首次加载页面和更新数据时调用此函数。

function InitChart(dataForChart) {
    $("#trendChart").dxChart({
        dataSource: dataForChart,
        series: {
            argumentField: "Month",
            valueField: "Value",
            name: "Value",
            type: "bar",
            color: '#ffaa66'
        }
    });
}

其次更改您的 UpdateChart-函数,使其获得一个参数:

function UpdateChart(myData) {
  var parsedData = JSON.parse(myData);
  // Call Init Chart function here
  InitChart(parsedData);
}

第三:改变你的server-side-javascript,所以数据传递给函数:

 System.Web.UI.ScriptManager.RegisterStartupScript(Me.Page, Me.GetType(), "ANY_KEY" + 
 Guid.NewGuid.ToString, "UpdateChart(" + jsonData + ");", True)