Javascript 使用参数从客户端调用后端函数以填充chart.js图形(vb.net、jQuery)
我正在尝试调用vb.net后端函数,以便填充chart.js条形图 我知道这是可能的,因为我使用此方法获取图表的标签 我的问题是,当我尝试调用另一个后端函数并将参数传递给它时,它会给我一个错误,告诉我: -->编译器错误消息:BC30451:未声明“statsType”。由于其保护级别,可能无法访问 我要做的是在下拉值更改时调用javascript函数,在下拉列表中获取新selectedItem的值,并使用该值作为参数调用后端函数,以获取填充图表的数据 这是我的密码: 客户端:Javascript 使用参数从客户端调用后端函数以填充chart.js图形(vb.net、jQuery),javascript,jquery,asp.net,vb.net,charts,Javascript,Jquery,Asp.net,Vb.net,Charts,我正在尝试调用vb.net后端函数,以便填充chart.js条形图 我知道这是可能的,因为我使用此方法获取图表的标签 我的问题是,当我尝试调用另一个后端函数并将参数传递给它时,它会给我一个错误,告诉我: -->编译器错误消息:BC30451:未声明“statsType”。由于其保护级别,可能无法访问 我要做的是在下拉值更改时调用javascript函数,在下拉列表中获取新selectedItem的值,并使用该值作为参数调用后端函数,以获取填充图表的数据 这是我的密码: 客户端: <asp:
<asp:DropDownList ID="ddlStatsType" ClientIDMode="Static" runat="server">
<asp:ListItem Text="Participation rate" Value="1"></asp:ListItem>
<asp:ListItem Text="Refusal rate" Value="2"></asp:ListItem>
<asp:ListItem Text="No answer" Value="3"></asp:ListItem>
<asp:ListItem Text="Declined" Value="4"></asp:ListItem>
<asp:ListItem Text="Coming from somewhere else" Value="5"></asp:ListItem>
</asp:DropDownList>
<script type="text/javascript">
$(document).ready(function () {
initializeChart();
$("[id*=ddlStatsType]").bind("change", function () {
initializeChart();
});
});
function initializeChart() {
// Get context with jQuery - using jQuery's .get() method.
var ctx = $("#myChart").get(0).getContext("2d");
// This will get the first returned node in the jQuery collection.
var myNewChart = new Chart(ctx);
var statsType = $("#ddlStatsType").val();
var data = {
labels: <%= GetSitesListStringBuilder() %>,
datasets: [
{
label: "My Second dataset",
fillColor: "rgba(151,187,205,0.5)",
strokeColor: "rgba(151,187,205,0.8)",
highlightFill: "rgba(151,187,205,0.75)",
highlightStroke: "rgba(151,187,205,1)",
data: <%= UpdateStatsType(statsType) %> }
]
};
myNewChart.Bar(data, {
scaleShowVerticalLines: false
});
}
</script>
$(文档).ready(函数(){
initializeChart();
$(“[id*=ddlStatsType]”)。绑定(“更改”,函数(){
initializeChart();
});
});
函数initializeChart(){
//使用jQuery获取上下文-使用jQuery的.Get()方法。
var ctx=$(“#myChart”).get(0.getContext(“2d”);
//这将获得jQuery集合中返回的第一个节点。
var myNewChart=新图表(ctx);
var statstType=$(“#ddlstatstType”).val();
风险值数据={
标签:,
数据集:[
{
标签:“我的第二个数据集”,
填充颜色:“rgba(151187205,0.5)”,
strokeColor:“rgba(151187205,0.8)”,
高光填充:“rgba(151187205,0.75)”,
强光笔划:“rgba(151187205,1)”,
数据:}
]
};
myNewChart.Bar(数据、{
scaleShowVerticalline:错误
});
}
后端代码:
Public Function GetSitesListStringBuilder() As String
Dim siteName As String
Dim sb As StringBuilder = New StringBuilder
Dim siteList As List(Of String) = New List(Of String)
For row As Integer = 0 To dtSiteStats.Rows.Count - 1
siteName = dtSiteStats.Rows(row).Item(1).ToString
siteList.Add(siteName)
Next
sb.Append("[")
For i As Integer = 0 To siteList.Count - 1
siteName = siteList(i)
sb.Append("""")
sb.Append(siteName.ToString)
If i < siteList.Count - 1 Then
sb.Append(""",")
Else
sb.Append("""")
End If
Next
sb.Append("]")
Return sb.ToString
End Function
Public Function UpdateStatsType(ByVal statsType As Integer) As String
Dim resultString As String = ""
Select Case statsType
Case 1
resultString = GetParticipationRate()
Case 2
resultString = GetRefusalRate()
Case 3
resultString = GetNoAnswerRate()
Case 4
resultString = GetParticipationToOtherSitesRate()
Case 5
resultString = GetParticipationFromOtherSitesRate()
End Select
Return resultString
End Function
Public Function GetParticipationRate() As String
Dim sb As StringBuilder = New StringBuilder
sb.Append("[")
For row As Integer = 0 To dtSiteStats.Rows.Count - 1
Dim originalParticipants As Integer = CType(dtSiteStats.Rows(row).Item(3), Integer)
Dim participantsFromOtherSite As Integer = CType(dtSiteStats.Rows(row).Item(5), Integer)
Dim totalInvitationsSent As Integer = CType(dtSiteStats.Rows(row).Item(8), Integer)
Dim participationRate As Integer = CInt(((originalParticipants + participantsFromOtherSite) / totalInvitationsSent) * 100)
If row < dtSiteStats.Rows.Count - 1 Then
sb.Append(participationRate)
sb.Append(",")
Else
sb.Append(participationRate)
End If
Next
sb.Append("]")
Return sb.ToString
End Function
公共函数GetSitesListStringBuilder()作为字符串
将siteName设置为字符串
将某人调整为StringBuilder=新StringBuilder
Dim siteList作为列表(字符串的数量)=新列表(字符串的数量)
对于dtSiteStats.Rows.Count-1,行作为整数=0
siteName=dtSiteStats.Rows(row).Item(1).ToString
siteList.Add(站点名称)
下一个
某人附加(“[”)
对于i作为整数=0的站点列表。计数-1
siteName=站点列表(i)
某人加上(“”)
sb.Append(siteName.ToString)
如果我
任何帮助都将不胜感激。如果在我对我的问题的描述中有什么不清楚的地方,请让我知道,我会澄清的
谢谢 您是否尝试在这行数据上添加断点:并检查statsType的值??你可以添加后端功能吗?我在谷歌浏览器中使用了控制台,并确认statsType确实从下拉列表中获得了正确的值。还将后端代码添加到我的问题中!:)尝试用属性装饰您的方法,并使其成为静态(共享)方法。