2 x Datagridview funktioniert nicht

Horst1945

Cadet 4th Year
Registriert
Okt. 2014
Beiträge
106
Hallo,

Beim Lieferschein schreiben benutze ich zwei DataGridView.

arikel_ArtielSuch.jpg

Das dgvArtikel benutze ich, wenn ich über die ArtikeNr. den Artikel in der Datenbank speichre. Damit ich sehe, welcher Artikel gespeichert ist, wird er in dem dgvArtikel angezeigt. Wenn ich weitere Artikel eintragen möchte und ich die Artikelnummer nicht weiß, dann kann über die TextBox bis zu fünf Buchstaben z.B. Kanü eingeben:

Code:
private void artiekelSuchen(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter)
            {
                if (txtArtbez.TextLength >= 3 & txtArtbez.TextLength <= 6)
                {
                    int i = 0;
                    con.Open();
                    var strSQL = "Select artnr, artbez from artikel where artbez LIKE @SEARCH";
                    DataSet ds = new DataSet();
                    SqlDataAdapter adapter = new SqlDataAdapter();
                    adapter.SelectCommand = new SqlCommand(strSQL, con);
                    adapter.SelectCommand.Parameters.AddWithValue("@SEARCH", "%" + txtArtbez.Text + "%");
                    adapter.Fill(ds);

                    counter = ds.Tables[0].Rows.Count;
                    if (counter >= 1)
                    {
                        //dgvArtikelSuch.Columns[6].DefaultCellStyle.Font = new Font(dgvArtikel.DefaultCellStyle.Font, FontStyle.Bold);
                        //dgvArtikelSuch.Columns[7].DefaultCellStyle.Font = new Font(dgvArtikel.DefaultCellStyle.Font, FontStyle.Bold);

                        while (i < counter)
                        {


                            int n = dgvArtikelSuch.Rows.Add();
                            dgvArtikelSuch.Rows[0].Cells[6].Value = txtArtbez.Text = ds.Tables[0].Rows[n]["ArtNr"].ToString();
                            dgvArtikelSuch.Rows[0].Cells[7].Value = txtArtbez.Text = ds.Tables[0].Rows[n]["Artbez"].ToString();
                            
                            n++;
                            i++;

                        }
                    }

                    con.Close();

                }
            }
        }
Sollte mehrere Artikel mit kanü in der Tabelle Artikel vorhanden sein, dann sollten mir die 10 Artikel im dgvArtikel angezeigt werden, die ich dann über artnr über einen strSQL = "Select artnr, artbez, menge, vpeinh, gesmenge from Artikel where artnr =
'" + txtArtnr.Text + "'": verarbeiten kann.

Im Dataset stehen 86 Artikel:

dataset.jpg

Aber wenn ich beim ersten:

Code:
 dgvArtikelSuch.Rows[0].Cells[6].Value = txtArtbez.Text = ds.Tables[0].Rows[n]["ArtNr"].ToString();

ankomme, dann erscheint diese Fehler Meldung:

Ein Ausnahmefehler des Typs "System.ArgumentOutOfRangeException" ist in mscorlib.dll aufgetreten.

Zusätzliche Informationen: Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Auflistung sein.


In VB 6.0 habe ich diese Prinzip genauso gehandhabt und da hat es geklappt!

Was mach ich bei Visual C# verkehrt?

Horst
 
Schau' dir nochmal genau an, was du mit dem n in der while-Schleife machst.
 
Fehler gefunden.

So habe ich es hinbekommen:

Code:
 counter = ds.Tables[0].Rows.Count;
                    if (counter >= 1)
                    {

                        txtArtbez.Clear();
                        dgvArtikelSuch.DataSource = ds.Tables[0];
                        var lastColIndex = dgvArtikelSuch.Columns.Count -1;
                        var lastCol = dgvArtikelSuch.Columns[lastColIndex];
                        lastCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                        
                    }

Das war eine schwierige Geburt!!!!!
 
Zurück
Oben