Мы используем 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
in a Foreach
)
Мой вопрос: может ли кто-нибудь дать мне несколько указателей на возможное решение. График, приведенный ниже, соответствует правильному, если они не были выстроены один за другим, но начинались и заканчивались в один и тот же таймфрейм (месяц). Например, бюджет для Jan сравнивается с фактическим для января. Я не спрашиваю о модуле 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; }
Это, как это не должно быть, перечисляя данные в сиквеле линии. Хотя он показывает, что он имеет все необходимые данные.
Буду признателен за все, что вы могли бы добавить. Спасибо.
О, ты говоришь что-то там. Позвольте мне проверить это. Приветствия. – DoStuffZ
ДА ... Я ЛЮБЛЮ U MAN ..;) – DoStuffZ
@DoStuffZ: Рад, что я мог бы помочь. –