Member 13765884 Ответов: 1

Скрыть все строки, которые не соответствуют метке


Я хочу скрыть все строки в datagrid, которые не соответствуют тексту в метке Access.text, как бы я это сделал?


foreach (DataGridViewRow row in productionDGV.Rows)
{
    if (row.Cells[4].Value.ToString() == Access.Text)
    {
        row.Visible = true;
    }
    else if (row.Cells[4].Value.ToString() != Access.Text)
    {
        row.Visible = false;
    }
}


Что я уже пробовал:

foreach (DataGridViewRow row in productionDGV.Rows)
 {
     if (row.Cells[4].Value.ToString() == Access.Text)
     {
         row.Visible = true;
     }
     else if (row.Cells[4].Value.ToString() != Access.Text)
     {
         row.Visible = false;
     }

Krunal Rohit

А у вас выход с этим кодом есть ?

КР.

Member 13765884

Он возвращается с полной таблицей, включая данные, которые должны быть скрыты

1 Ответов

Рейтинг:
1

Wendelius

В общем случае вы можете установить строку как невидимую, установив свойству Visible значение true. Однако, вам может потребоваться, чтобы приостановить привязки при задании собственность. Рассмотрим следующее, замените myDataTable с фактическим объектом, который вы используете в качестве источника данных.

BindingContext[myDataTable].SuspendBinding();
foreach (DataGridViewRow row in this.productionDGV.Rows) {
   if (row.Cells[4].Value.ToString() != Access.Text) {
      row.Visible = false;
   }
}
BindingContext[myDataTable].ResumeBinding();


Member 13765884

Спасибо. Я написал это как ...


Восстановления команда bindingcontext[productionBindingSource].Суспендирование();
по каждому элементу (ячейки datagridviewrow Row в этом.productionDGV.Строк)
{
if (row.Cells[4].Value.Метод toString() != Доступа.Текст)
{
подряд.Видна = ложь;
}
}
Восстановления команда bindingcontext[productionBindingSource].ResumeBinding();


Но теперь сетка выходит пустой. поскольку отладчик не выдает ошибку - не могли бы вы помочь, пожалуйста?

Wendelius

Теперь вы сравниваете ячейку 0 (= первый столбец), это правильная ячейка?

Member 13765884

Нет, это не правильно. Я пытался попробовать разные вещи, чтобы увидеть, может ли ошибка быть чем-то другим. Это все еще на самом деле клетка 4, которую я пытаюсь сравнить

Wendelius

Итак, если вы используете ячейки[4], которые являются 5-м столбцом, работает ли он так, как ожидалось?

Member 13765884

нет, это не так. Я перепробовал все ряды.

Wendelius

Ладно, поскольку у меня нет ни программы, ни данных, трудно сказать, что именно идет не так.

Попробуйте поместить точку останова на линию сравнения и, когда точка останова будет достигнута, проверьте, почему сравнение не работает. Например, есть ли дополнительные пробелы в значении ячейки или метки или, возможно, что-то еще, что делает строки другими.