суммируйте строки в gridview и меняйте цвет меток при выделении - PullRequest
0 голосов
/ 26 июня 2018

У меня есть сетка, похожая на эту заметку

  Hour - ActualA - TargetA - ActualB - TargetB - ActualC - TargetC - ActualAA 
    1        7         10        9         12        0         17         21

- цели остаются неизменными в каждом столбце.

ETC ETC будет 8 часов ... с разными цифрамипо всей сетке ...

У меня есть метка, которая суммирует все фактические значения и отображает это в элементе управления меткой, это прекрасно работает, так как суммирует все фактические цифры и получает итоговое значение ..

Что мне нужно сделать, так это суммировать каждый час и вариант и сказать, что если фактическое значение больше целевого, то метка зеленая, если меньше, чем метка красная. Но я не уверен, как мне этого добиться, это мой кодпока, но это не работает ... может быть, я слишком усложняю вещи?Кто-нибудь может помочь ...

 public int CalculatePackingTotal(DataTable dt)
    {
        using (DataManager dmgr = new DataManager())
        {
            int sum = 0;
            int target = 0;

            foreach (DataRow row in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {
                    if (dc.ColumnName.Contains("ActualA"))
                    {
                        sum += (int) row[dc.ColumnName]; //This adds up all the Actual rows in the grid
                    }
                    if (dc.ColumnName.Contains("TargetA"))
                    {
                        target += (int)row[dc.ColumnName]; //This adds up all the target rows in the grid
                    }

                    if (dc.ColumnName.Contains("ActualB"))
                    {
                        sum += (int) row[dc.ColumnName];
                    }

                    if (dc.ColumnName.Contains("TargetB"))
                    {
                        target += (int) row[dc.ColumnName];
                    }

                    if (dc.ColumnName.Contains("ActualC"))
                    {
                        sum += (int) row[dc.ColumnName];
                    }

                    if (dc.ColumnName.Contains("TargetC"))
                    {
                        target += (int) row[dc.ColumnName];
                    }

                    if (dc.ColumnName.Contains("ActualAA"))
                    {
                        sum += (int) row[dc.ColumnName];
                    }

                    if (dc.ColumnName.Contains("TargetAA"))
                    {
                        target += (int) row[dc.ColumnName];
                    }

                    Color foreColorGreen = Color.Green;
                    Color forecolorRed = Color.Red;
                    if  (sum < target)
                    {
                        sum.Equals(forecolorRed);
                    }
                    else
                    {
                        sum.Equals(foreColorGreen);
                    }

                }
            }
            return sum;
            }
        }

Общая метка работает только с суммированием столбцов actaul, то есть

if (dc.ColumnName.Contains("Actual"))
                        {
                            sum += (int) row[dc.ColumnName]; //This adds up all the Actual rows in the grid.

Но я добавил в остальных, и это не меняет цвет и добавляетвсе цели, так что фактическое никогда не будет отображаться зеленым цветом, даже если это сработало ...

...