У меня есть база данных, содержащая значения разных дорожек.Dynamic Enabled = true на диаграмме C#
Например:
Трек 1:
Sensor 1
Sensor 2
Sensor 3
Sensor 4
Sensor 5
Sensor 6
Sensor 7
Sensor 8
Трек 2:
Sensor 1
Sensor 2
Sensor 3
Sensor 4
Sensor 5
Sensor 6
Sensor 7
Sensor 8
Sensor 9
Sensor 10
Sensor 11
Sensor 12
Как вы можете видеть Track 2 имеет 12 датчиков (Witch является m ах!).
Теперь я хочу отобразить значения датчиков на графике. Ведьма работает.
Однако на данный момент имеется 12 предметов с жестким кодом. Поэтому, когда есть 8 датчиков, легенда все равно покажет 12.
Теперь, что я сделал, было добавлено Enabled = False, поэтому вы его не увидите. (См. Пример ниже)
<chart:DataSeries x:Name="dsSensor1" Enabled="False" RenderAs="Line" LineThickness="3" LegendText="1" XValueType="DateTime" XValueFormatString="dd-MM HH:mm" YValueFormatString="#0.##'V'" MarkerEnabled="False">
<chart:DataSeries.DataPoints>
<chart:DataPoint XValue="2001-01-01" YValue="3.2" Enabled="False"/>
</chart:DataSeries.DataPoints>
</chart:DataSeries>
<chart:DataSeries x:Name="dsSensor2" Enabled="False" RenderAs="Line" LineThickness="3" LegendText="2" XValueType="DateTime" XValueFormatString="dd-MM HH:mm" YValueFormatString="#0.##'V'" MarkerEnabled="False">
<chart:DataSeries.DataPoints>
<chart:DataPoint XValue="2001-01-01" YValue="3.2" Enabled="False"/>
</chart:DataSeries.DataPoints>
</chart:DataSeries>
Прямо сейчас вы не увидите легенду.
Теперь я код я сделал новый цикл вроде этого:
foreach (DCHistory item in loadOperation.Entities.OrderByDescending(t => t.SensorNumber).Take(1))
Это будет принимать наибольшее количество определенной дорожки. Например, этот запрос приведет к .
Что я сделать прямо сейчас, то =
foreach (DCHistory item in loadOperation.Entities.OrderByDescending(t => t.SensorNumber).Take(1))
{
DataSeries series1 = chart.Series.First(s => s.Name == string.Format("dsSensor1"));
DataSeries series2 = chart.Series.First(s => s.Name == string.Format("dsSensor2"));
DataSeries series3 = chart.Series.First(s => s.Name == string.Format("dsSensor3"));
DataSeries series4 = chart.Series.First(s => s.Name == string.Format("dsSensor4"));
DataSeries series5 = chart.Series.First(s => s.Name == string.Format("dsSensor5"));
DataSeries series6 = chart.Series.First(s => s.Name == string.Format("dsSensor6"));
DataSeries series7 = chart.Series.First(s => s.Name == string.Format("dsSensor7"));
DataSeries series8 = chart.Series.First(s => s.Name == string.Format("dsSensor8"));
DataSeries series9 = chart.Series.First(s => s.Name == string.Format("dsSensor9"));
DataSeries series10 = chart.Series.First(s => s.Name == string.Format("dsSensor10"));
DataSeries series11 = chart.Series.First(s => s.Name == string.Format("dsSensor11"));
DataSeries series12 = chart.Series.First(s => s.Name == string.Format("dsSensor12"));
int sensor = item.SensorNumber;
if (sensor == 8)
{
series1.Enabled = true;
series2.Enabled = true;
series3.Enabled = true;
series4.Enabled = true;
series5.Enabled = true;
series6.Enabled = true;
series7.Enabled = true;
series8.Enabled = true;
}
}
Этот код будет рассчитывать, если результат равен 8. Если 8 включить первые 8 элементов в легенде.
Теперь это работает. Однако мне также нужно сделать один для таких же 12 датчиков, или 6. Это приведет к большому количеству кода, и все же это hardcoded!
Мой вопрос:
ли Возможное сделать это в цикле?
Я попробовал уже, но был unsuccesfull ...
Что я пробовал:
foreach (DCHistory item in loadOperation.Entities.OrderByDescending(t => t.SensorNumber).Take(1))
{
int sensor = item.SensorNumber;
int sensor2 = sensor + 1; //set +1 because if number = 0, it gives error.
if (sensor >= 1)
{
for (int number = 1; number < sensor2; number++)
{
DataSeries series = chart.Series.First(s => s.Name == string.Format("dsSensor{0}", number));
series.Enabled = true;
}
}
}
Результатом этого кода является то, что легенда показывает мне 12 датчиков, даже если есть 8 .. .
Когда я поставил это в цикле, у меня есть (тот, где я беру 1 результат). Я получаю то же самое, что и в моем последнем примере. И это то, что я получаю 12 датчиков, в то время как у меня есть только 8 – Mitch
@Mitch Попробуйте использовать эту последнюю версию (я все еще был в льготный период), теперь она извлекает только 8 экземпляров серии –
. Я положил ее внутри этого цикла: foreach (DCHistory item в loadOperation.Entities.OrderByDescending (t => t.SensorNumber) .Take (1)) Однако все еще всегда возвращает 12:/ – Mitch