Повторяющиеся строки (ОБЪЕКТЫ) после настройки источника данных DGV [C #] - PullRequest
0 голосов
/ 24 сентября 2018

Мне трудно решить эту проблему.У меня есть объект с именем Section, я добавляю этот объект Section в список, а затем этот список используется в качестве источника данных представления таблицы данных.Когда я добавляю объект в список, все хорошо, когда я устанавливаю источник данных DataGridView и отображаю его в сетке, все нормально.Когда я добавляю еще один объект типа Section, как только список будет задан как источник данных сетки, сетка отобразит 2 объекта, но оба они совпадают с первым добавленным объектом.Добавление третьего объекта ведет себя так же и так далее.Что может быть причиной этого ?изменение списка источника данных, когда он связан с сеткой данных?

Вот часть, в которой устанавливается объект

    private void AddSectionButtonClicked(object sender, EventArgs e) {
        try {

            var documentType = MopDocument.DocumentType;
            var sections = FillAssemblyInformation(documentType.DllPath);
            if (sections == null || sections.Count <= 0)
                return;

            var addSectionForm = new MopSectionAddEditForm(sections);
            var dialog = addSectionForm.ShowDialog();
            if (dialog == DialogResult.Cancel)
                return;

            var addedSection = addSectionForm.AddedEditedMopSection;

            var sectionsList = dgvSelectedSections.DataSource as BindingList<MopSection>;
            if (sectionsList == null || sectionsList.Count == 0) {
                sectionsList = new BindingList<MopSection>();
                addedSection.SequenceNumber = 1;
            } else {
                var lastLevel = sectionsList[sectionsList.Count - 1].SequenceNumber;
                addedSection.SequenceNumber = lastLevel + 1;
            }

            sectionsList.Add(addedSection); 



            // I looped this list to check what objects are being added, and it is correct.
            dgvSelectedSections.DataSource = null;
            dgvSelectedSections.DataSource = sectionsList;
            // I looped again on the list and now the objects are duplicated to the first element that was added to the list



            dgvSelectedSections.Rows[dgvSelectedSections.Rows.Count - 1].Selected = true;
        } catch (Exception ex) {
           Logger.ShowErrorDialog("EXception Occured", ex);
        }
    }

Пожалуйста, если у вас есть какая-либо информация о том, почему это происходит, позвольте мнезнать

1 Ответ

0 голосов
/ 24 сентября 2018

Решение найдено, это произошло из-за неправильной проверки в методе .Equals, который был переопределен в объектах раздела

...