Member 13512434 Ответов: 1

Как скрыть конкретную строку C#


Я хочу скрыть строку, если в ней есть ячейка, содержащая "цветочный магазин", если на этикетке написано "магазин BMX"

if (label3.Text == "BMX shop")
foreach (DataGridViewRow dr in CustOrdersDGV.Rows)
{
        if (dr.Cells[7].Value.ToString().ToLower().Contains("Flower shop"))
        {
            dr.Visible = false;
        }
    }


Но когда код запускается, он показывает все строки

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

if (dr.Cells[7].Value.ToString() == "BMX shop")
{
    dr.Visible = false;
}



и...
foreach (DataGridViewRow dr in CustOrdersDGV.Rows)
                {
                    if (dr.Cells.Count > 7)  // validate the index

                    if (dr.Rows[7].Value.ToString() == "BMX shop")
                    {
                        dr.Visible = false;
                    }
                }

F-ES Sitecore

if (dr.Cells[7].Value.Метод toString().ToLower().Contains("цветочный магазин"))

Вышеприведенная линия никогда не будет истинной. Можно сколько угодно нижестоящим содержать символы верхнего регистра?

Вместо того чтобы пытаться скрыть строки, просто не привязывайтесь к строкам, которые вам не нужны. Когда вы устанавливаете источник данных для сетки, отфильтровывайте ненужные строки, чтобы gridview никогда их не видел.

1 Ответов

Рейтинг:
2

OriginalGriff

Посмотрите на свой код:

if (dr.Cells[7].Value.ToString().ToLower().Contains("Flower shop"))
Поскольку ToLower всегда удаляет любые заглавные символы, вы никогда не получите совпадение с любым текстом, содержащим заглавные буквы...

А в другом примере кода используется другой номер столбца, так что один из них, вероятно, ошибочен. (Вот почему лучше использовать вместо этого имя столбца - менее подверженное ошибкам.)

Кроме того, вам нужно использовать отладчик для просмотра данных столбцов во время выполнения кода - а мы не можем сделать это за вас, так как у нас нет доступа к вашим данным!


CPallini

5.