Asp.net 将vb codebehind中的数组放入javascript数据表
所以我尝试在我的asp.net网站上使用这个javascript 我在codebehind中有一个数组,其中包含我的数据,我将其转换为如下多维数据表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
<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