2012-11-29 64 views
0

在Javascript中,我调用一个函数从数据表中检索数据并将其转换为javascriptSerializer,然后在Javascript图表中使用数据。一切工作正常,第一次,当我改变数据集选择参数即日期等,并再次调用函数PopulateChart()试图拉一个新的数据集,我有一个问题在javascript中检索它。数据和json字符串在服务器上正确填充,但不在客户端上,旧数据字符串仍然存在。Javascript访问JavascriptSerializer JSON字符串正确

变种chartData仍显示旧的数据,甚至通过返回serializer.Serialize(行)显示服务器

下面是我的代码和我想要实现对正确的数据。

ASPX

   var chartData = <%= PopulateChart() %>; 

VB

  Public Function PopulateChart() As String 

       ''Get Chart Data 
       Dim daChart As New dsSVTableAdapters.clsChart 
       Dim dtChart As New dsSV.webV1_ChartsDataTable 
       Dim drChart As dsSV.webV1_ChartsRow 

       dtChart = daChart.GetChart(hChartID.Value) 

       If dtChart.Rows.Count > 0 Then 

        drChart = dtChart.Rows(0) 
        hChartName.Value = drChart.Description 

        HInterval.Value = drChart.Interval 
        Dim dtData As DataTable 
        Dim ds As New DataSet() 
        ds = GetData(4, DateTime.Parse("2012-05-01"), DateTime.Parse("2012-06-30")) 
        dtData = ds.Tables(0) 

        Dim serializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer() 
        Dim rows As New List(Of Dictionary(Of String, Object)) 

        Dim row As Dictionary(Of String, Object) 

        For Each dr As DataRow In dtData.Rows 
         row = New Dictionary(Of String, Object) 
         For Each col As DataColumn In dtData.Columns 
          If col.ColumnName = "DateAndTime" Then 
           Dim dts As DateTime = DateTime.Parse(dr(col).ToString()) 
           row.Add(col.ColumnName, dts.ToString("yyyy-MM-dd hh:mm:ss")) 
          ElseIf col.ColumnName = "Time" Then 
           Dim ts As DateTime = DateTime.Parse(dr(col).ToString()) 
           row.Add(col.ColumnName, ts.ToString("hh:mm:ss")) 
          Else 
           row.Add(col.ColumnName, dr(col)) 
          End If 
         Next 
         rows.Add(row) 
        Next 

        serializer.MaxJsonLength = Int32.MaxValue 


        Return serializer.Serialize(rows) 
       End If 

      End Function 
+2

如果你的问题是JavaScript的一部分,向我们展示了JavaScript代码和服务器响应的外观 – Bergi

+0

我已经更新了我的帖子有更多的代码,并试图进一步解释,如果它仍然不清楚让我知道由于@Bergi – user1588253

+0

'变种chartData = <(%)= PopulateChart()%>;'不会动态地在客户端,因为它是在页面加载仅评估服务器侧更新。 –

回答

1

var chartData = <%= PopulateChart() %>;只会被在每个页面负载评估服务器端,<%=....%>asp.net包装器时,只在一个页面在网页中呈现内容请求。它不会使PopulateChart()函数可用于客户端的JavaScript。

您将需要通过ajax调用加载新数据,或使用请求参数重新加载整个页面,以指示要加载的数据。

这是一篇关于使用jquery的asp.net和ajax的codeproject的文章。

http://www.codeproject.com/Articles/17203/Using-jQuery-for-AJAX-in-ASP-NET

+0

好,使很多的感觉,你将能够提供一个例子或者给我看看,如果你知道的任何链接。谢谢@ChristianWestman – user1588253