Заполнение ячейки строкой в ​​представлении таблицы данных на основе оператора if - PullRequest
0 голосов
/ 15 октября 2019

У меня есть datagridview, который отображает значения в массиве. Мне бы хотелось, чтобы в 5-м столбце отображалась строка, основанная на данных в предыдущих столбцах. Как вы можете видеть, у меня есть цикл foreach, но столбец 5 все еще остается пустым. Вся помощь приветствуется.

 try
     {
     if (File.Exists("competitorDetailsFile.txt")) //if this file exists
     {
     string[] detailsArray = File.ReadLines("competitorDetailsFile.txt") .ToArray();
   //write data to array
     double time = 0;
     double time1 = 0;


   for (int number = 0; number < detailsArray.Length;number++)
      {
       string[] detailsArray2 = detailsArray[number].Split('~'); 

 //split on tilda

    time1 = Convert.ToDouble(detailsArray2[3]) + 
            Convert.ToDouble(detailsArray2[4]) + 
            Convert.ToDouble(detailsArray2[5]) + 
            Convert.ToDouble(detailsArray2[6]) + 
            Convert.ToDouble(detailsArray2[7]);
    time = time1 / 5;
    int score = Convert.ToInt32(detailsArray2[8]);


     //time is equal to the average of the ski times 

    dataGridView1.Rows.Add(detailsArray2[0], 
    Convert.ToDouble(detailsArray2[1]), 
    Convert.ToInt32(detailsArray2[8]), 
    time);

{
   foreach (DataGridViewRow row in dataGridView1.Rows)
       {
           foreach (DataGridViewCell cell in row.Cells)
           {
             if (time > 100)
           {
             row.Cells[5].Value = "LOW";
           }
             else if (time < 100)
           {
             row.Cells[5].Value = "HIGH";
           }

        }
    }

}

1 Ответ

0 голосов
/ 15 октября 2019

Я не думаю, что вы добавляете пятый столбец (поэтому не можете ссылаться на него позже), и циклы foreach кажутся ненужными ... Попробуйте

string score = 
   time > 200
      ? "LOWEST"
      : time > 100
         ? "LOW"
         : time > 50
            ? "MEDIUM"
            : "HIGH";

dataGridView1.Rows.Add(detailsArray2[0], Convert.ToDouble(detailsArray2[1]), Convert.ToInt32(detailsArray2[8]), time, score);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...