仅使用Javascript就可以动态填充google图表
我在我的C#项目中使用Google Charts API(使用CefSharp的WebBrowser),它可以处理硬编码的数据,但每当我尝试使用data.addRows()以友好方式填充它时,我就会遇到问题。我需要一些简单的东西,比如外部的csv/json,这样就可以在C#内部运行(WebBrowser非常有限,有时会出现错误),但每个解决方案都告诉我通过php服务器或类似的更“复杂”的东西来实现这一点。那么,有没有一种方法可以仅仅使用JavaScript和外部文件(或其他不同但可行的文件)来填充该图表 这就是代码,如果有用的话:仅使用Javascript就可以动态填充google图表,javascript,html,charts,google-visualization,webbrowser-control,Javascript,Html,Charts,Google Visualization,Webbrowser Control,我在我的C#项目中使用Google Charts API(使用CefSharp的WebBrowser),它可以处理硬编码的数据,但每当我尝试使用data.addRows()以友好方式填充它时,我就会遇到问题。我需要一些简单的东西,比如外部的csv/json,这样就可以在C#内部运行(WebBrowser非常有限,有时会出现错误),但每个解决方案都告诉我通过php服务器或类似的更“复杂”的东西来实现这一点。那么,有没有一种方法可以仅仅使用JavaScript和外部文件(或其他不同但可行的文件)来填
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current', {packages:["orgchart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Name');
data.addColumn('string', 'Manager');
data.addColumn('string', 'ToolTip');
// For each orgchart box, provide the name, manager, and tooltip to show.
data.addRows([['Alice', 'Mike', ''],['Bob', 'Jim', 'Bob Sponge'],['Carol', 'Bob', '']]);
// Create the chart.
var chart = new google.visualization.OrgChart(document.getElementById('chart_div'));
// Draw the chart, setting the allowHtml option to true for the tooltips.
chart.draw(data, {'allowHtml':true});
}
</script>
</head>
<body>
<div id="chart_div"></div>
</body>
</html>
load('current',{packages:[“orgchart”]});
google.charts.setOnLoadCallback(drawChart);
函数绘图图(){
var data=new google.visualization.DataTable();
data.addColumn('string','Name');
data.addColumn('string','Manager');
data.addColumn('string','ToolTip');
//对于每个orgchart框,提供要显示的名称、管理器和工具提示。
addRows(['Alice'、'Mike'、''、'Bob'、'Jim'、'Bob Sponge']、['Carol'、'Bob'、'');
//创建图表。
var chart=new google.visualization.OrgChart(document.getElementById('chart_div'));
//绘制图表,为工具提示将allowHtml选项设置为true。
draw(数据,{'allowtml':true});
}
Obs:CefSharp WebBrowser只是将上述代码作为普通HTML文件调用,并在C#应用程序中运行
谢谢大家! 我也做过类似的事情,但我一直在使用google charts API的
arrayToDataTable()
方法,但我相信这也可以做到。不过,你需要依靠C#。我想要彻底,所以这是一个大问题。我非常乐意澄清,因为我确信其中至少有一部分会措词不当/令人困惑
TLDR
object
的列表,其中包含这些对象,表示为列表。(例如,[,]
)
如果您可以生成一个数据点列表,在c#端表示为列表,那么您就成功了
public ActionResult GetChartData_All_Week()
{
var dataPointsList = this.myDataSource.GetMyDataPointList();
var convertedJson = JsonConvert.SerializeObject(dataPointsList, new JsonSerializerSettings()
{
//Not Needed, I just like to throw out any values that are null.
NullValueHandling = NullValueHandling.Ignore
});
return Content(convertedJson);
Route("Index/Path/To/Post/To")]
public ActionResult GetChartData_All_Week()
重要我们将在下一步中使用ajax,因此我们需要此操作结果方法上方的神奇的[Route]
属性:
public ActionResult GetChartData_All_Week()
{
var dataPointsList = this.myDataSource.GetMyDataPointList();
var convertedJson = JsonConvert.SerializeObject(dataPointsList, new JsonSerializerSettings()
{
//Not Needed, I just like to throw out any values that are null.
NullValueHandling = NullValueHandling.Ignore
});
return Content(convertedJson);
Route("Index/Path/To/Post/To")]
public ActionResult GetChartData_All_Week()
所有艰难的事情现在都完成了。如果您启动应用程序并访问上面定义的路线(对我来说是/Index/Charts/All/Week
),您应该会在那里看到类似以下内容的JSON数据:
[["07/04/2020",25.5,44.0],["07/05/2020",25.600000381469727,45.0],["07/06/2020",25.5,44.0],...["07/08/2020",25.5,43.0]]
如果你不这样做,那么下一部分就行不通了请始终记住,这是我们需要的列表列表强>
drawChart()
方法中,将在data.AddRows()调用之前添加以下内容
CS List ToList()
方法添加到任何与我的Weather\u Entry
类等效的方法中,以便将所有重要数据点按顺序放入列表*。这样做很好,也很容易做到:
public List<object> GetMyDataPointList(){
var myDataPointList = new List<MyDataPointType>();
myDataPointList = this.GetMyListOfDataPoints();
List<object> turnMeIntoJSON = new List<object>();
myDataPointList.ForEach(dp => turnMeIntoJSON.Add(dp.ToList));
return turnMeIntoJSON;
}
public List GetMyDataPointList(){
var myDataPointList=新列表();
myDataPointList=this.GetMyListOfDataPoints();
List turnMeIntoJSON=新列表();
ForEach(dp=>turnMeIntoJSON.Add(dp.ToList));
返回Turnmeintoson;
}
祝你好运 代码到底有什么问题?没有任何内容呈现到
图表\u div
?此代码有效。我只想从外部文件(csv、json、甚至txt)填充data.addrows(),检查是否使用csv…非常详细的答案。我要补充澄清的唯一一点是,在您的示例中,ajax调用使用的是jQuery。@CodyLohse,谢谢!我是一个完全不懂网络的人,我完全不知道我在使用jQuery(尽管我听说过)。更新帖子!