Problem z czyszczeniem DataGridView

0

Witam,
Mam problem z czyszczeniem DataGridView. Pobieram dane z bazy danych i wypelniam nimi DataGridView. Klikam na dany rekord i w innym formularzu go albo usuwam (z DataGridView i zmieniam oznaczenie w bazie danych) albo pozostowiam taki jak był. Jednak gdy zamknę formularz na którym działam na rekordzie to wszystkie rekordy są podwajane. Np: mam 2 rekordy:

imię | nazwisko |
xyz | kowalski |
abc | nowakkk |

to po kliknięciu na dany rekord i zwyczajnym zamknięciu formularza DataGridView wyświetli:

xyz | kowalski |
abc | nowakkk |
xyz | kowalski |
abc | nowakkk |

Wiem, że to pewnie problem z DataTable albo BindingSource, ale nie wiem jak to wyczyścić by znów pobierało aktualne dane z bazy danych i je poprawnie wyświetlało. Każdorazowo po zamknięciu formularza wykonywana jest funkcja GetListOperatDetailsAndInsertToDGV(). Poniżej kod:

public BindingSource ds = new BindingSource();
        public DataTable dt = new DataTable();

public void GetListOperatDetailsAndInsertToDGV()
        {
          
            OperatDetailsSql operatDetailsSql = new OperatDetailsSql();

            operatDetails = operatDetailsSql.GetListOperatDetailsSsmToAll(schemat); // pobranie listy szczegółów operatów, które w typie mają SimpleScanMapa

            if (!dt.Columns.Contains("IEMZ"))
            {
                dt.Columns.Add("IEMZ", typeof(string));
            }
            if (!dt.Columns.Contains("Skaner"))
            {
                dt.Columns.Add("Skaner", typeof(string));
            }
            if (!dt.Columns.Contains("Numer strony"))
            {
                dt.Columns.Add("Numer strony", typeof(string));
            }

            //tworzenie poszczególnych kolumn
            for (int i = 0; i < operatDetails.Count; i++) // uzupelnianie tabeli pobranymi danymi
            {
                int pozycjaSkanera = GetSkanerName(PathTranche);
                var txtSkaner = operatDetails[i].FilePath.Split(new[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
                string skaner = txtSkaner[pozycjaSkanera];

                dt.Rows.Add(new object[] { operatDetails[i].Operat.Iemz, skaner, operatDetails[i].PageNumber });
            }
            ds.DataSource = dt;

            dataGridView1.DataSource = ds;

            List<object> scannerList = new List<object>();
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                object skaner = dataGridView1.Rows[i].Cells[1].Value;
                if (!scannerList.Contains(skaner))
                {
                    scannerList.Add(skaner);
                }
            }
            for (int i = 0; i < scannerList.Count; i++)
            {
                comboBox1.Items.Add(scannerList[i]);
            }
            comboBox1.SelectedIndex = 0;
            slog.Info("Pobrano liste szczegolow operatow oznaczonych jako mapy");
          //  ds = null;
          //  ds.Clear();
        }
0

Dobra z podwajaniem rekordów już sobie poradziłem. Teraz tylko podwójnie pobiera mi informacje do ComboBoxa.

0

Musisz usuwac elementy z ComboBoxa przed dodaniem. ComboBox.Items.Clear bodajże.

1 użytkowników online, w tym zalogowanych: 0, gości: 1