Удаление строки из представления сетки данных - PullRequest
0 голосов
/ 21 мая 2018

Привет. Я пытаюсь удалить строки из таблицы данных при определенных условиях.Я успешно удалил строки, однако это работает только при 1-м условии.

Когда ячейка 6 "", она удаляется, однако, когда ячейка 6 имеет статус, это не так.Не могли бы вы помочь, пожалуйста, мы 2-е условие игнорируется.

       for (int i = dgvAuthG.Rows.Count - 1; i >= 0; i--)
        {
            if ((dgvAuthG.Rows[i].Cells[6].Value == "") || (dgvAuthG.Rows[i].Cells[6].Value == "Status"))
            {
                dgvAuthG.Rows.Remove(dgvAuthG.Rows[i]);
            }
        }
        dgvAuthG.Refresh();

ниже выписка из отладчика

dgvAuthG.Rows[i].Cells[6].Value = "Status"

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Уже ответив без решения проблемы, с тех пор я понял, что .Value - это свойство объекта , а не строка, , поэтому вызов == не работает должным образом, насколько я знаю даже если объект является строкой (MAYBE).

Попробуйте вызвать .ToString для .Value, прежде чем проверять равенство, или использовать .Equals (), последний, на мой взгляд, является лучшей практикой.

0 голосов
/ 21 мая 2018

Я предлагаю вам напечатать dgvAuthG.Rows[i].Cells[6].Value перед оператором if и дважды проверить, что оно определенно "Status", оно чувствительно к регистру, поэтому "status" не будет равно true.

Если вы используете visual studioили что-то, что я бы предложил вставить точку останова и использовать наблюдатели, один для целого условия оператора if, один для второй половины условия и один только для dgvAuthG.Rows[i].Cells[6].Value, чтобы избежать необходимости печатать его.

dgvAuthG.Rows[i].Cells[6].Value == "Status" БУДЕТ оценивать как истинное, когда верно, просто очень вероятно, что это не так из-за случая или чего-то еще - не могу сказать больше, чем с предоставленной информацией, я не думаю.

...