На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: maxim84_, juice
  
> Как сохранить цвет выбранной строки после обновления данных из базы Mysql?
Здравствуйте, прошу вашей помощи. Есть такой код C#:


ExpandedWrap disabled
    Dictionary<int, Color> colorsList = new Dictionary<int, Color>();
            private void toolStripButton5_Click(object sender, EventArgs e)//ИЗМЕНЕНИЕ ЦВЕТА СТРОКИ
            {
     
                for (int i = 0; i < listView1.Items.Count; i++)
                {
                    if (listView1.Items[i].Selected == true)
                    {
                        if (toolStripComboBox1.Text == "Красный")
                            
     
                        {
     
                            listView1.Items[i].BackColor = Color.Red;
                            if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.Red); }
                            else { colorsList[i] = Color.Red; }
                        }
     
                        else if (toolStripComboBox1.Text == "Желтый")
     
                        {
     
                            listView1.Items[i].BackColor = Color.Yellow;
                            if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.Yellow); }
                            else { colorsList[i] = Color.Yellow; }
                        }
     
                        else if (toolStripComboBox1.Text == "Зеленый")
     
                        {
     
                            listView1.Items[i].BackColor = Color.Green;
                            if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.Green); }
                            else { colorsList[i] = Color.Green; }
     
                        }
     
                        else if (toolStripComboBox1.Text == "Без цвета")
     
                        {
     
                            listView1.Items[i].BackColor = Color.White;
                            if (!colorsList.ContainsKey(i)) { colorsList.Add(i, Color.White); }
                            else { colorsList[i] = Color.White; }
                        }
                    }
                }
            }
     
            void SetColor()
            {
     
                foreach (var c in colorsList)
                {
                    if (listView1.Items.Count >= c.Key)
                        listView1.Items[c.Key].BackColor = c.Value;
                }
            }


Выбранная строка в listview цветом выделяется, но после обновления данных из mysql в форму происходит сброс цвета соответственно.

Код обновления просто по кнопке:
ExpandedWrap disabled
    private async void toolStripButton4_Click(object sender, EventArgs e)//ОБНОВЛЕНИЕ ДАННЫХ
            {
                listView1.Items.Clear();
                await LoadBanksAsync();
            }


я понимаю что listView1.Items.Clear(); сбрасывает все с listview, но без нее начинается дублирование данных. Как сохранить цвет? Подмогите пожалста.
Есть мысли ребят? Что нужно скажите, скину код. Маюсь уже долго :(
mkmen100500
Цвет выбирает пользователь?

Добавлено
Да и если пользователь красил одну строку, а после обновления там уже другая, которую возможно ему красить не нужно.
"Воля - это то, что заставляет тебя побеждать, когда твой рассудок говорит тебе, что ты повержен" Карлос Кастанеда
^D^imaда, цвет выбирает пользователь, с этой проблемой я разобрался засунув SetColor(); в обновление данных. Только при закрытии и новом открытии формы цвет все равно пропадает

ExpandedWrap disabled
    private async void toolStripButton4_Click(object sender, EventArgs e)//ОБНОВЛЕНИЕ ДАННЫХ
            {
     
                listView1.Items.Clear();
                await LoadBanksAsync();
                SetColor();
            }


Добавлено
^D^ima и после того как я окрасил существующую строку, при добавлении новой возникает Исключение типа "System.ArgumentOutOfRangeException" возникло в mscorlib.dll, но не было обработано в коде пользователя

Дополнительные сведения: InvalidArgument=Значение '0' недопустимо для 'index'.

Еще посмотрел что если в таблице более одной строки и все их окрасить, обновить то выбивает ту же ошибку. Решено только для одной строки в общем.
Сообщение отредактировано: mkmen100500 -
есть у кого какие мысли?
UP
Ребята помогите утопающему))
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0993 ]   [ 20 queries used ]   [ Generated: 21.01.19, 15:57 GMT ]