Asp.net 将vb codebehind中的数组放入javascript数据表

Asp.net 将vb codebehind中的数组放入javascript数据表,asp.net,arrays,vb.net,datatable,typeconverter,Asp.net,Arrays,Vb.net,Datatable,Typeconverter,所以我尝试在我的asp.net网站上使用这个javascript 我在codebehind中有一个数组,其中包含我的数据,我将其转换为如下多维数据表 <in codebehind vb> Public Property datat As DataTable For outerIndex As Integer = 0 To 2 Dim newRow As DataRow = table.NewRow() For innerIndex As Integer = 0 To

所以我尝试在我的asp.net网站上使用这个javascript

我在codebehind中有一个数组,其中包含我的数据,我将其转换为如下多维数据表

<in codebehind vb>
Public Property datat As DataTable

For outerIndex As Integer = 0 To 2
    Dim newRow As DataRow = table.NewRow()
    For innerIndex As Integer = 0 To 2
            newRow(innerIndex) = Array(outerIndex, innerIndex)
    Next
    table.Rows.Add(newRow)
Next

datat = table

<in asp>

function drawChart() {
    var data = <%=datat%>

公共属性datat作为DataTable
对于outerIndex,整数=0到2
将newRow作为DataRow=table.newRow()进行调整
对于innerIndex,整数=0到2
newRow(innerIndex)=数组(outerIndex,innerIndex)
下一个
table.Rows.Add(newRow)
下一个
datat=表格
函数绘图图(){
风险值数据=
我总是得到一个未定义的错误数据表

我的新作品

<in asp>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
    google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawcharts);
    function drawcharts() {
        var data = google.visualization.arrayToDataTable([
            ['X', 'MW'],
      [<%=mwtimepublic%>, <%=mwarraypublic%>]
        ]);

        var options = {
            title: 'MW Trend'
        };

        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
        chart.draw(data, options);
    });
</script>

load(“可视化”、“1”、{packages:[“corechart”]});
setOnLoadCallback(绘图图);
函数绘图图(){
var data=google.visualization.arrayToDataTable([
['X','MW'],
[, ]
]);
变量选项={
标题:“MW趋势”
};
var chart=new google.visualization.LineChart(document.getElementById('chart_div'));
图表绘制(数据、选项);
});
作为DataTable的公共函数Dtable() 暗起始日期为字符串 Dim enddate作为字符串

    If FirstRun = False Then
        datat.Clear()
    End If

    If FirstRun = True Then
        FirstRun = False
        enddate = Date.Today
        startdate = DateAdd(DateInterval.Day, -20, Date.Today)
    Else
        enddate = TextBox2.Text
        startdate = TextBox1.Text
    End If

'<confidential code></confidentialcode>

    Dim mwaray(pdata.Count)
    Dim mwtime(pdata.Count)
    Dim table As New DataTable
    table.Columns.Add("X")
    table.Columns.Add("MW")
    Dim i As Integer
    Dim x As Integer
    For i = 1 To pdata.Count
        mwaray(i) = pdata(i).Value
        If mwaray(i) > upperlimit Then
            upperlimit = mwaray(i) + 50
        End If
    Next

    For i = 1 To pdata.Count
        mwtime(i) = "'" & pdata(i).TimeStamp.LocalDate.Month.ToString() & "/" & pdata(i).TimeStamp.LocalDate.Day.ToString() & "/" & pdata(i).TimeStamp.LocalDate.Year.ToString() & " " & pdata(i).TimeStamp.LocalDate.TimeOfDay.Hours.ToString() & ":" & pdata(i).TimeStamp.LocalDate.TimeOfDay.Minutes.ToString() & ":" & pdata(i).TimeStamp.LocalDate.TimeOfDay.Seconds.ToString() & "'"
    Next

    For i = 1 To pdata.Count
        mwarraypublic.Add(mwaray(i))
    Next

    For i = 1 To pdata.Count
        mwtimepublic.Add(mwtime(i))
    Next

End Function
如果FirstRun=False,则
datat.Clear()
如果结束
如果FirstRun=True,则
FirstRun=False
enddate=日期。今天
startdate=DateAdd(DateInterval.Day,-20,Date.Today)
其他的
enddate=TextBox2.Text
startdate=TextBox1.Text
如果结束
'
Dim mwaray(数据计数)
Dim mwtime(pdata.Count)
Dim表作为新数据表
表.列.添加(“X”)
表.列.添加(“MW”)
作为整数的Dim i
作为整数的Dim x
对于i=1到pdata.Count
mwaray(i)=pdata(i).值
如果mwaray(i)>上限,则
上限=兆瓦(i)+50
如果结束
下一个
对于i=1到pdata.Count
mwtime(i)=“'”&pdata(i).TimeStamp.LocalDate.Month.ToString()&“/”&pdata(i).TimeStamp.LocalDate.Day.ToString()&“/”&pdata(i).TimeStamp.LocalDate.TimeOfDay.Hours.ToString()&“:”&pdata(i).TimeStamp.LocalDate.TimeOfDay.Minutes.ToString()&“:”&pdata(i).TimeStamp.LocalDate.TimeOfDay.Seconds.ToString()和“”
下一个
对于i=1到pdata.Count
MwarayPublic.Add(mwaray(i))
下一个
对于i=1到pdata.Count
mwtimepublic.Add(mwtime(i))
下一个
端函数

我仍然没有绘制图表

我制作了一个视频,介绍如何在从codebehind获取javascript数组的同时创建jquery ui自动完成

跳到6:00查看我是如何制作阵列的

更新:


Google实际上将数组数组转换为数据表。 换句话说,您必须返回一个行数组,而这些行本身就是一个列值数组

因此,在您的代码背后,您可以执行以下操作 首次导入Web服务

Imports System.Web.Services
然后使用返回arraylist的函数创建webmethod

<WebMethod()>
Public Shared Function Dtable() As ArrayList
dim table As New ArrayList
Dim YourDataSetTable as new Dataset.YorDataTable
'fill you table here

'first get column names as the first row/array
dim colNames as New ArrayList

For Each col as DataColumn in YourDataSetTable.Columns
   colNames.Add(col.ColumnName)
Next
table.Add(colNames)

'then on to the data
For Each r as DataRow in YourDataSetTable .Rows
  dim colVals as New ArrayList
  For Each col as DataColumn in YourDataSetTable.Columns
    colVals.Add(r.Item(col.ColumnName))
  Next
  table.Add(colVals)
Next
Return table
End Function

确保页面上有一个启用了pagemethods的脚本管理器。

您发布的代码示例不应编译。在Visual Basic中,代码的第一行有一个与数据表无关的块,后面是一个与数据表无关的块

尝试将代码放入属性getter:

Public ReadOnly Property datat As DataTable
   Get
      For outerIndex As Integer = 0 To 2
          Dim newRow As DataRow = table.NewRow()

          For innerIndex As Integer = 0 To 2
              newRow(innerIndex) = Array(outerIndex, innerIndex)
          Next

          table.Rows.Add(newRow)
      Next

      Return table
   End Get
End Property

那么在我的例子中,我应该将var data设置为什么呢?javascript需要一个datatable来创建图表。我不认为您理解var data=“必须是datatable而不是数组”这是我试图添加的图表javascript。您可以发布
datat
变量在源代码中的呈现方式吗?
PageMethods.Dtable(function(results){
  var data = resluts;
  //the rest of your code goes here...
});
Public ReadOnly Property datat As DataTable
   Get
      For outerIndex As Integer = 0 To 2
          Dim newRow As DataRow = table.NewRow()

          For innerIndex As Integer = 0 To 2
              newRow(innerIndex) = Array(outerIndex, innerIndex)
          Next

          table.Rows.Add(newRow)
      Next

      Return table
   End Get
End Property