На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Как сохранить цвет выбранной строки после обновления данных из базы 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
                Ребята помогите утопающему))
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0264 ]   [ 16 queries used ]   [ Generated: 19.03.24, 07:49 GMT ]