Не корректная работа счетчика
Не могу понять ,почему при работе цикла, результат получается совершенно не тот что я ожидаю. Предполагается, что при каждом нажатии данные в таблице должны меняться с соответствии с числом на счетчике.
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 шт):
Автор решения: aepot
→ Ссылка
Как верно замечено - "сначала цикл полностью отработает, а уже после этого ваш интерфейс перерисуется".
Это должно было быть просто.
Заведите поле с массивом статусов
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]);
Массив статусов следует обновлять каждый раз после изменения данных.
