Удалить строку в таблице

  • Автор темы Автор темы Art4D
  • Дата начала Дата начала

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Реакции
48
Баллы
28
Есть код, который должен удалять строки, если в этой строке в девятом столбце текст ячейки "0".
Но почему то цикл останавливается после первого выполнения(удаляет одну строку и заканчивает работу), в чем может быть проблема?

PHP:
Развернуть Свернуть Копировать
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["TM"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for (int i=0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // проверяем ячейку
        if (cells[9]=="0")
        sourceTable.DeleteRow(i);
    }
}
 
Иногда начинает удалять кусками, т.е. цикл выполняется, но не весь, как это вообще возможно?
 
Потому что необходимо идти снизу вверх.
По Вашей схеме, удаляя, например, вторую строку, на её место встает следующая, но цикл её уже не обработает, так как она сместилась на позицию выше, которая уже пройдена.
 
  • Спасибо
Реакции: Art4D
Работает, спс
PHP:
Развернуть Свернуть Копировать
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["TM"];
// ищем в каждой строчке в таблице
lock(SyncObjects.TableSyncer)
{
    for(int i = sourceTable.RowCount - 1; i>=0; i--)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // проверяем ячейку
        if (cells[9]!="0")
        sourceTable.DeleteRow(i);
    }
}
 
  • Спасибо
Реакции: ibred
Потому что необходимо идти снизу вверх.
Не обязательно!
C#:
Развернуть Свернуть Копировать
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["TM"];
// ищем в каждой строчке в таблице
lock (SyncObjects.TableSyncer)
{
    for (int i = 0; i < sourceTable.RowCount; i++)
    {
        // читаем строку из таблицы (это будет массив ячеек)
        var cells = sourceTable.GetRow(i).ToArray();
        // проверяем ячейку
        if (cells[9] == "0")
        {
            sourceTable.DeleteRow(i);
            i--;
        }
    }
}
 
Друзья, помогите сниппетом чтобы удалялись строки из таблицы если в колонке C содержится промежуток от 1 до 20?
А еще та же задача, но в колонке B содержится слово "en"
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)