Прокрутка кнопок переноса данных переупорядочивает - PullRequest
0 голосов
/ 18 октября 2018

Итак, у меня есть ретранслятор данных с некоторыми статистическими данными из источника данных, однако у меня также есть 3 кнопки, которые должны вести себя по-разному в зависимости от элемента ретранслятора данных.В тот момент, когда ретранслятор данных сначала загружается, он делает все как положено, однако, когда я начинаю быстро прокручивать элементы в ретрансляторе данных, кнопки меняются между собой, есть ли способ исправить это, например, только ретранслятор рисует свои элементыодин раз.Я устанавливаю кнопки следующим образом:

private void NotificationdataRepeater_DrawItem(object sender, Microsoft.VisualBasic.PowerPacks.DataRepeaterItemEventArgs e)
    {
            //Here we asign specific functions to the buttons depending on which type of notification
            string type = "";
            string subject = "";
            for (int i = e.DataRepeaterItem.Controls.Count - 1; i >= 0; i--)
            {
                Control c = e.DataRepeaterItem.Controls[i];
                if (c.Name.Contains("name"))
                {
                    type = c.Text;
                    count++;
                }
                if (c.Name.Contains("sub"))
                {
                    subject = c.Text;
                    count++;

                }
                if (c.Text == "button1")
                {
                    if (type == "Afhaalkast")
                    {
                        c.Visible = false;
                        count++;

                    }
                    if (type == "Versie")
                    {
                        c.Visible = false;
                        count++;

                    }
                    if (type == "Recept Locatie")
                    {
                        c.Visible = false;
                        count++;

                    }
                    if (type.ToUpper().Contains("BEZORGING"))
                    {
                        c.Text = "Verplaats naar morgen";
                        c.Visible = true;
                        c.Click += (s, ex) =>
                        {
                            DateTime VolgendeDag = DateTime.Today.AddDays(1);
                            if (VolgendeDag.DayOfWeek == DayOfWeek.Saturday)
                            {
                                VolgendeDag.AddDays(2);
                            }
                            else if (VolgendeDag.DayOfWeek == DayOfWeek.Sunday)
                            {
                                VolgendeDag.AddDays(1);
                            }
                            char[] arr = new char[] { ' ' };
                            string[] parts = subject.Split(arr);
                            string receptnr = parts[3];
                            dbConn.UpdateBezorgingByRecept(VolgendeDag, receptnr, false, null, parts[7], parts[10], false);
                            dbConn.voegHistorieToeString(receptnr, "Bezorging verplaatst naar " + VolgendeDag.ToString("dd-MM-yyyy"));
                            setData();
                        };
                        count++;

                    }
                    if (type.ToUpper().Contains("OUDE"))
                    {
                        c.Text = "Naar afhaalkast";
                        AfhaalPanel ap = AfhaalPanel.GetInstance;
                        c.Click += (s, ex) => ap.BringToFront();
                        count++;

                    }

                }
                if (c.Text == "button2")
                {
                    if (type == "Versie")
                    {
                        c.Visible = false;
                        count++;

                    }
                    if (type == "Recept Locatie")
                    {
                        c.Text = "Open instellingen";
                        AppContainer ac = AppContainer.GetInstance;
                        c.Click += (s, ex) => ac.instellingenTab_Click(s, ex);
                        count++;

                    }
                    if (type.ToUpper().Contains("RECEPT BEZORGING"))
                    {
                        c.Text = "Plaats in afhaalkast";
                        count++;

                    }
                    if (type == "Afhaalkast" || type.ToUpper().Contains("OUDE"))
                    {
                        c.Text = "Start met opruimen";
                        OudeRecepten oudeRecepten = new OudeRecepten();
                        c.Click += (s, ex) => oudeRecepten.Show();
                        count++;

                    }

                }
                if (c.Text == "button3")
                {
                    Notification notification = null;
                    c.Text = "Negeren";
                    foreach (Notification n in notifications)
                    {
                        if (n.Name == type)
                        {
                            notification = n;
                        }
                    }
                    c.Click += (s, ex) => ignoreNotification(notification);
                    count++;

                }
                if (c.Name == "pictogram")
                {
                    if (type == "Versie")
                    {
                        PictureBox pictogram = (PictureBox)c;
                        pictogram.Image = Properties.Resources.license_key;
                        count++;

                    }
                    if (type == "Recept Locatie")
                    {
                        PictureBox pictogram = (PictureBox)c;
                        pictogram.Image = Properties.Resources.backups;
                        count++;

                    }
                    if (type.ToUpper().Contains("RECEPT BEZORGING"))
                    {
                        PictureBox pictogram = (PictureBox)c;
                        pictogram.Image = Properties.Resources.package;
                        count++;

                    }
                    if (type == "Afhaalkast")
                    {
                        PictureBox pictogram = (PictureBox)c;
                        pictogram.Image = Properties.Resources.drawer;
                        count++;

                    }
                    if (type.ToUpper().Contains("OUDE"))
                    {
                        PictureBox pictogram = (PictureBox)c;
                        pictogram.Image = Properties.Resources.broom;
                        count++;
                    }
                }

            }
        }

        }

, и уведомление выглядит так (который используется как источник данных)

public class Notification
{
    private string name;
    public string notificationTime;
    public string notificationSubject;
    public string notificationType;


    public Notification(string notificationName, string notificationTime, string notificationSubject, string notificationType)
    {
        this.name = notificationName;
        this.notificationTime = notificationTime;
        this.notificationSubject = notificationSubject;
        this.notificationType = notificationType;
    }

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
        }
    }

    public string Time
    {
        get
        {
            return notificationTime;
        }
        set
        {
            notificationTime = value;
        }
    }

    public string Subject
    {
        get
        {
            return notificationSubject;
        }
        set
        {
            notificationSubject = value;
        }
    }

    public string NotificationType
    {
        get
        {
            return notificationType;
        }
        set
        {
            notificationType = value;
        }
    }

}

Я знаю, что мой код не такой чистый, нона данный момент это не приоритет, это будет исправлено позже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...