Исключение не обрабатывается, когда я хочу установить значение для ячейки - PullRequest
0 голосов
/ 29 мая 2019

Я использую запрос для получения данных и отображения в datagridview. И используя форматирование ячеек для вызова функции (раскраска строки при возникновении условия) Затем я хочу установить значение ячейки при возникновении некоторых условий. Код

    private void InventoryListGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        HighlightRow(sender, e.RowIndex, "Equipment");
    }

    private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        HighlightRow(sender, e.RowIndex, "Chemical");
    }
    private void HighlightRow(object sender, int index, string list)
    {
        DataGridView row = (sender as DataGridView);
        if (row[0, index].Value == null) return;

        Color bgColor = Color.LightGreen; //available
        Color foreColor = Color.Black;

        // status column
        if (row[4, index].Value.ToString() == "CHECKOUT")
        {
            bgColor = Color.Yellow; // Color.FromArgb(128, 128, 255);
        }

        // calibrate due
        if (bgColor == Color.LightGreen)
        {
            DateTime dueDate = Convert.ToDateTime(row[6, index].Value);
            DateTime today = DateTime.Now;
            TimeSpan diff = dueDate - today;
            if (diff.TotalDays <= 0)
            {
                bgColor = Color.Red;
                foreColor = Color.LightYellow;
                row[4, index].Value = list == "Chemical" ? "EXPIRED" : "OVERDUE";//************It shows this -> System.StackOverflowException: 'Exception of type 'System.StackOverflowException' was thrown.'

            }
            else if (diff.TotalDays <= 30)
            {
                if (list == "Chemical")
                {
                    bgColor = Color.LightGreen;
                }
                else
                {
                    bgColor = Color.LightCoral; // Color.FromArgb(255, 128, 128);
                }
            }
            else if (diff.TotalDays <= 90)
            {
                if (list == "Chemical" && diff.TotalDays <= 60)
                {
                    bgColor = Color.Orange;
                }
                else if (list == "Chemical")
                {
                    bgColor = Color.LightGreen;
                }
                bgColor = Color.Orange; // Color.FromArgb(255, 192, 128);
            }
        }

        System.Diagnostics.Debug.WriteLine("Coloring " + row[0, index].Value.ToString() + " with " + bgColor);
        // start coloring the row
        for (int i = 0; i < row.ColumnCount; i++)
        {
            row[i, index].Style.BackColor = bgColor;
            row[i, index].Style.ForeColor = foreColor;
        }
    }

В приведенном ниже коде исключение не обработано?

row[4, index].Value = list == "Chemical" ? "EXPIRED" : "OVERDUE";

Как установить значение для ячейки?

1 Ответ

0 голосов
/ 18 июня 2019

Я перехожу на другой метод, использующий запрос, чтобы сначала установить значение для отображения в datagridView, а не изменять значение после отображения данных в datagridView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...