Не корректная работа счетчика

Рейтинг: 0Ответов: 1Опубликовано: 25.05.2023

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

       private int count;

    private void SwitchStatus()
    {
        
        for (int i = 0; i < 4; i++)
        {
            string? status = context.Statuses.FirstOrDefault(x => x.Statusid == count)?.Statusname;
            currentStatus = status;
            count = i;

        }

    }
    private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {

        if (dataGridView1.Columns[6].HeaderText == "Статус")
        {
            SwitchStatus();
            FilterStatus(currentStatus);
        }

    }

Таблица

Значение перекидывает сразу на индекс = [2]

Ответы

▲ 1Принят

Как верно замечено - "сначала цикл полностью отработает, а уже после этого ваш интерфейс перерисуется".

Это должно было быть просто.

Заведите поле с массивом статусов

private string[] statuses;

затем где-нибудь однократно загрузите их, не надо обновлять их на каждый клик

statuses = context.Statuses.Select(x => x.Statusname).ToArray();

Затем переключайтесь по ним

private int currentStatus;

private void SwitchStatus()
{
    currentStatus = (currentStatus + 1) % statuses.Length;
}

Ну и в методе dataGridView1_ColumnHeaderMouseClick вызывайте фильтр так

FilterStatus(statuses[currentStatus]);

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