Asp.net 将ChartJSCore转换为Highcharts.net-在循环中使用动态系列数据发布
(正如我回答的问题,这是一个编辑,让人们知道,使用ChartJSCore或HighCharts.Net,使用下面的适当解决方案,可以在堆叠条形图或堆叠柱形图中创建动态数字列或条形图。我希望这对某些人有所帮助。) 我在ChartJS中遇到了一个障碍,即图表图例和堆叠条形图的实现,因此我必须找到另一个替代方案。如果您的数据是静态的,那么Highcharts.NET看起来很棒,而且很容易实现,但是什么时候我们的数据是静态的呢。它们不包含任何动态示例,在Stackoverflow上也没有任何在线示例 在ChartJSCore中,在循环中创建一系列数据集相当容易 此代码适用于ChartJSCore:Asp.net 将ChartJSCore转换为Highcharts.net-在循环中使用动态系列数据发布,asp.net,.net,highcharts,chart.js,Asp.net,.net,Highcharts,Chart.js,(正如我回答的问题,这是一个编辑,让人们知道,使用ChartJSCore或HighCharts.Net,使用下面的适当解决方案,可以在堆叠条形图或堆叠柱形图中创建动态数字列或条形图。我希望这对某些人有所帮助。) 我在ChartJS中遇到了一个障碍,即图表图例和堆叠条形图的实现,因此我必须找到另一个替代方案。如果您的数据是静态的,那么Highcharts.NET看起来很棒,而且很容易实现,但是什么时候我们的数据是静态的呢。它们不包含任何动态示例,在Stackoverflow上也没有任何在线示例 在
IDictionary<string, BarDataset> barDataset = new Dictionary<string, BarDataset>();
data.Datasets = new List<Dataset>();
//assign series totals to the chart's dataset
foreach (var seriesId in seriesIds)
{
var seriesName = _seriesRepository.GetSeriesName(seriesId);
var seriesTotalsByLast6Months = _seriesRepository.GetSeriesTotalsByLast6Months(seriesId);
barDataset[seriesId.ToString()] = new BarDataset
{
Data = seriesTotalsByLast6Months.Select(x => x.Amount).ToArray(),
Label = seriesName.First()
};
}
//Add the datasets to the dataset list
foreach (var x in barDataset.Values)
{
data.Datasets.Add(x);
}
IDictionary barDataset=new Dictionary();
data.dataset=新列表();
//将系列总计分配给图表的数据集
foreach(系列ID中的变量系列ID)
{
var seriesName=\u seriesRepository.GetSeriesName(seriesId);
var seriesTotalsByLast6Months=_seriesRepository.GetSeriesTotalsByLast6Months(seriesId);
barDataset[seriesId.ToString()]=新的barDataset
{
Data=seriestotalsbylast6个月。选择(x=>x.Amount)。ToArray(),
Label=seriesName.First()
};
}
//将数据集添加到数据集列表中
foreach(barDataset.Values中的变量x)
{
数据集。添加(x);
}
我正朝着这个方向前进,但是Data=seriesTotalsByLast6Months.Select(x=>x.Amount).ToList()行上的类型不匹配,因为HighCharts不接受通用列表。它有自己的列表,我不知道如何在这种情况下格式化它
IDictionary<string, ColumnSeries> columnSeries = new Dictionary<string, ColumnSeries>();
foreach (var seriesId in seriesIds)
{
var seriesName = _seriesRepository.GetSeriesName(seriesId);
var seriesTotalsByLast6Months = _seriesRepository.GetSeriesTotalsByLast6Months(seriesId);
columnSeries[seriesId.ToString()] = new ColumnSeries
{
Name = seriesName.First(),
//type mismatch on the line below
Data = seriesTotalsByLast6Months.Select(x => x.Amount).ToList()
};
}
foreach (var x in columnSeries.Values)
{
//also, what goes here - what do you add the columnSeries' to?
}
IDictionary columnSeries=new Dictionary();
foreach(系列ID中的变量系列ID)
{
var seriesName=\u seriesRepository.GetSeriesName(seriesId);
var seriesTotalsByLast6Months=_seriesRepository.GetSeriesTotalsByLast6Months(seriesId);
columnSeries[seriesId.ToString()]=新columnSeries
{
Name=seriesName.First(),
//在下面的行中输入不匹配
Data=seriesTotalsByLast6Months.Select(x=>x.Amount).ToList()
};
}
foreach(columnSeries.Values中的变量x)
{
//还有,这里是什么-你把columnSeries添加到了什么?
}
另外,我不知道添加组合数据集的循环是什么样子的。在ChartJSCore中,您必须创建一个数据对象并向其中添加数据集。正如我的代码所示,这很容易做到。我因此解决了这个问题,因为HighChart数据需要它自己的格式化ColumnSeriesData—无论开发人员出于什么奇怪的原因决定这样做,您都不能传入一个通用列表:
IDictionary<string, ColumnSeries> columnSeries = new Dictionary<string, ColumnSeries>();
foreach (var seriesId in seriesIds)
{
var seriesName = _seriesRepository.GetSeriesName(seriesId);
var seriesTotalsByLast6Months = _seriesRepository.GetSeriesTotalsByLast6Months(seriesId);
List<ColumnSeriesData> columnSeriesData = new List<ColumnSeriesData>();
seriesTotalsByLast6Months.ForEach(p => columnSeriesData.Add(new ColumnSeriesData { Y = p.Amount }));
columnSeries[seriesId.ToString()] = new ColumnSeries
{
Name = seriesName.First(),
Data = columnSeriesData
};
}
foreach (var x in columnSeries.Values)
{
//add column series to the chart
chartOptions.Series.Add(x);
}