Мы используем dotNETCHARTING, чтобы изобразить наши диаграммы, они принимают Series
для своих SeriesCollection
.Это новая диаграмма, над которой я работаю, все предыдущие имеют соотношение 1: 1 между показанным значением и извлеченным значением.Теперь у меня есть список значений, который нужно отобразить в виде списка значений 12: 12.
В настоящее время у меня есть 2 списка данных, которые отображаются (фактические и бюджетные за последние 12 месяцев) - но в одном Series
, где они должны быть 2 Series
.У меня есть данные, отсортированные и перечисленные по мере необходимости, хорошо почти перечисленные справа.
Ограничения: .NET 3.5 (VS2008), dotNETCHARTING.
Это будет очень печальное решение, если мне придется создать12 SQL для каждого месяца и 12 для бюджета.Из того, что я вижу, в этом нет необходимости, как только я найду способ разделить каждый список на отдельный Series
.
Каждый модуль имеет List<ModuleValue>
, я попытался с Dictionary<int, List<ModuleValue>>
, чтобыкаждая серия значений (12 месяцев) может иметь отдельный список.
Я пробовал Для каждого списка значений добавить каждое значение в списке к Series
, повторять до тех пор, пока не выйдет список значений.(Foreach
в Foreach
)
Мой вопрос таков: может кто-нибудь дать мне несколько советов относительно возможного решения.График ниже, по-видимому, правильный, если не выстроились в очередь один за другим, но начинали и заканчивали в один и тот же период времени (месяц).Например, бюджет на январь сравнивается с фактическим на январь. Я не спрашиваю о модуле dotNETCHARTING, у них много помощи.Я спрашиваю об этом промежуточном звене и о том, как он подает данные в модуль.
Основное тело логики:
protected override void CreateChildControls()
{
base.CreateChildControls();
//_chart.Type = ChartType.Combo;
_chart.DefaultSeries.Type = SeriesType.Line;
// Up for change - between here
IList listSeries = new List();
listSeries.Add(GetSeries(_module)); // This line should be listSeries = GetMultipleSeries(_module); or to that effect.
foreach (var series in listSeries)
{
_chart.SeriesCollection.Add(series);
}
// Up for change - and here
// This shows the title above the chart:
_chart.Title = _module.Title;
// This shows the title below the chart:
//_chart.XAxis.Label = new Label(_module.Title);
_chart.TitleBox.Line.Color = Charter.BackgroundColor;
base.SetAreaStyles();
base.SetLinkUrl(_module.LinkUrl);
}
Эта логика - старая логика, должна оставаться такой, как есть -потому что все другие графики полагаются на это.Может использоваться в качестве ориентира.Считайте, что эта логика заблокирована.
protected Series GetSeries(FrontModule module)
{
Series series = new Series(module.Title);
foreach (var value in module.Values)
{
string sFieldTitle = value.Text;
Element element = new Element(sFieldTitle, value.Value);
element.Color = Charter.GetColor(value.ColorIndex);
series.Elements.Add(element);
string sToolTip = string.Format
("{0}: {1:N0}"
, value.Tooltip
, value.Value);
element.ToolTip = sToolTip;
if (!string.IsNullOrEmpty(value.LinkUrl))
{
element.URL = Page.ResolveUrl(value.LinkUrl);
}
ChartTooltip += string.Concat(sToolTip, ", ");
}
ChartTooltip += "\n";
return series;
}
Это новая логика, и ее следует изменить, чтобы отразить желаемую логику.Считайте это настолько свободным, насколько это возможно.
protected List GetMultipleSeries(FrontModule module)
{
List listSeries = new List();
Series series = new Series(module.Title);
foreach (var keyPair in module.DictionaryValues)
{
string sFieldTitle = keyPair.Value.Text;
Element element = new Element(sFieldTitle, keyPair.Value.Value);
element.Color = Charter.GetColor(keyPair.Value.ColorIndex);
series.Elements.Add(element);
string sToolTip = string.Format
("{0}: {1:N0}"
, keyPair.Value.Tooltip
, keyPair.Value.Value);
element.ToolTip = sToolTip;
if (!string.IsNullOrEmpty(keyPair.Value.LinkUrl))
{
element.URL = Page.ResolveUrl(keyPair.Value.LinkUrl);
}
ChartTooltip += string.Concat(sToolTip, ", ");
}
listSeries.Add(series);
ChartTooltip += "\n";
return listSeries;
}
Так не должно быть, перечисляя данные в последовательной строке.Хотя он показывает, что в нем есть все необходимые данные.
Буду признателен за все, что вы сможете добавить.Спасибо.