2012-11-29 66 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