获取输入值并将其传递到JavaScript函数中,以便在ASP.NET核心Razor Pages中创建Chart.js图表

3vpjnl9f  于 2023-01-26  发布在  Chart.js
关注(0)|答案(1)|浏览(148)

Current look of my page
我试着把两个输入的值传递给clickupdate()js函数,为显示的图表设置一个新的范围,数字代表将要显示的列表的索引,所以基本上图表应该从哪个索引呈现到哪个索引。

  1. @page
  2. @model statmath_web.Pages.Visualization.VisualizationMainModel
  3. @{
  4. ViewData["Title"] = "CSV Data Visualization";
  5. }
  6. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>
  7. <html>
  8. <head>
  9. </head>
  10. <body>
  11. <center>
  12. <td >
  13. <input class="text-center param-input" id="Minimum_Parameter_Value"
  14. type="number" min="0" max="@Model.length" step="1"
  15. placeholder="Min" value="0" />
  16. </td>
  17. <td>
  18. <input class="text-center param-input" id="Maximum_Parameter_Value"
  19. type="number" min="0" max="@Model.length" step="1"
  20. placeholder="Max" value="@Model.length"/>
  21. </td>
  22. <br />
  23. <button onclick="clickupdate()">Update Data</button>
  24. <canvas id="myChart" width="1200" height="700"></canvas>
  25. <script>
  26. var ctx = document.getElementById("myChart").getContext("2d");
  27. var myChart = new Chart(ctx, {
  28. type: "line",
  29. data: {
  30. labels: @Html.Raw(Json.Serialize(Model.TimeList.GetRange(0, 50))),
  31. datasets: [
  32. {
  33. label: "VSE Value",
  34. backgroundColor: "rgb(255, 255, 255)",
  35. borderColor: "rgb(54, 162, 235)",
  36. fill: false,
  37. data: @Html.Raw(Json.Serialize(Model.ValueList.GetRange(0, 50))),
  38. }
  39. ]
  40. },
  41. options: {
  42. animation: false,
  43. parsing: false,
  44. responsive: true,
  45. },
  46. });
  47. function addData(chart, label, data) {
  48. chart.data.labels = label
  49. chart.data.datasets.forEach((dataset) => {
  50. dataset.data = data;
  51. });
  52. chart.update();
  53. }
  54. function clickupdate(){
  55. labelsNew = @Html.Raw(Json.Serialize(Model.TimeList.GetRange(Number(Minimum_Parameter_Value) , Number(Maximum_Parameter_Value) - Number(Minimum_Parameter_Value))))
  56. dataNew = @Html.Raw(Json.Serialize(Model.ValueList.GetRange(Number(Minimum_Parameter_Value) , Number(Maximum_Parameter_Value) - Number(Minimum_Parameter_Value))))
  57. addData(myChart, labelsNew, dataNew);
  58. }
  59. </script>
  60. </center>
  61. </body>
  62. </html>

到目前为止,我尝试在js部分设置常量和变量,但这些抛出“'name'在当前上下文中不存在”(CS0103)。
我意识到我可以把这些作为jQuery字符串传递到我的URL中,但是对于这个任务来说,应该有一个更干净的方法。

jei2mxaa

jei2mxaa1#

需要在Javascript部分创建新的变量列表,然后在其上使用.slice()。
参见更新代码:

  1. @page
  2. @model statmath_web.Pages.Visualization.VisualizationMainModel
  3. @{
  4. ViewData["Title"] = "CSV Data Visualization";
  5. }
  6. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>
  7. <html>
  8. <head>
  9. </head>
  10. <body>
  11. <center>
  12. <td >
  13. <input class="text-center param-input" id="Minimum_Parameter"
  14. type="number" min="0" max="@Model.length" step="1"
  15. placeholder="Min" value="0" />
  16. </td>
  17. <td>
  18. <input class="text-center param-input" id="Maximum_Parameter"
  19. type="number" min="0" max="@Model.length" step="1"
  20. placeholder="Max" value="@Model.length"/>
  21. </td>
  22. <br />
  23. <button onclick="clickupdate()">Update Data</button>
  24. <canvas id="myChart" width="1200" height="700"></canvas>
  25. <script>
  26. var ctx = document.getElementById("myChart").getContext("2d");
  27. var TimestampList = @Html.Raw(Json.Serialize(Model.TimeList));
  28. var ValueList = @Html.Raw(Json.Serialize(Model.ValueList));
  29. var myChart = new Chart(ctx, {
  30. type: "line",
  31. data: {
  32. labels: TimestampList,
  33. datasets: [
  34. {
  35. label: "VSE Value",
  36. backgroundColor: "rgb(255, 255, 255)",
  37. borderColor: "rgb(54, 162, 235)",
  38. fill: false,
  39. data: ValueList,
  40. }
  41. ]
  42. },
  43. options: {
  44. animation: false,
  45. parsing: false,
  46. responsive: true,
  47. },
  48. });
  49. function addData(chart, label, data) {
  50. chart.data.labels = label
  51. chart.data.datasets.forEach((dataset) => {
  52. dataset.data = data;
  53. });
  54. chart.update();
  55. }
  56. function clickupdate(){
  57. var pMin = document.getElementById('Minimum_Parameter').value;
  58. var pMax = document.getElementById('Maximum_Parameter').value;
  59. labelsNew = TimestampList.slice(pMin, pMax);
  60. dataNew = ValueList.slice(pMin, pMax);
  61. addData(myChart, labelsNew, dataNew);
  62. }
  63. </script>
  64. </center>
  65. </body>
  66. </html>
展开查看全部

相关问题