DataGridView Update geht nur einmal

schmitti81

Mitglied
Hi,

ich bin es mal wieder. Daten aus einer MySQL-Datenbank werden in einem DataGridView dargestellt.
Ich kann 1mal Daten updaten. Wenn ich aber ein 2.Mal updaten will bekomm ich folgende Fehlermeldung:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Wie kann ich mehrere Zeilen updaten ohne das Programm zwischendrin beenden zu müssen?
Ich denke irgendwie wird das DataGridView nicht richtig upgedatet.
VIELEN DANK

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace WindowsApplication10
{
    public partial class Form1 : Form
    {
        MySqlConnection oVerbindung;
        public Form1()
        {
            string sql = "SELECT * FROM dfz_2007";
            database();
            DataSetFuellen(sql, oVerbindung);
        }
        private void DataSetFuellen(string sql, MySqlConnection oVerbindung)
        {
            MySqlDataAdapter da = new MySqlDataAdapter(sql, oVerbindung);
            DataTable data = new DataTable();
            da.Fill(data);
            dataGridView1.DataSource = data;
            dataGridView1.Refresh();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataGridViewTextBoxColumn id = new DataGridViewTextBoxColumn();
            id.HeaderText = "Id";
            id.DataPropertyName = "id";
            DataGridViewTextBoxColumn vorname = new DataGridViewTextBoxColumn();
            vorname.HeaderText = "Vorname";
            vorname.DataPropertyName = "vorname";
            DataGridViewTextBoxColumn nachname = new DataGridViewTextBoxColumn();
            nachname.HeaderText = "Nachname";
            nachname.DataPropertyName = "nachname";
            DataGridViewTextBoxColumn geburtstag = new DataGridViewTextBoxColumn();
            geburtstag.HeaderText = "Geburtstag";
            geburtstag.DataPropertyName = "geburtstag";
            DataGridViewTextBoxColumn klasse = new DataGridViewTextBoxColumn();
            klasse.HeaderText = "Klasse";
            klasse.DataPropertyName = "klasse";
            DataGridViewTextBoxColumn schwimmer = new DataGridViewTextBoxColumn();
            schwimmer.HeaderText = "Schwimmer";
            schwimmer.DataPropertyName = "schwimmer";
            DataGridViewTextBoxColumn gezahlt = new DataGridViewTextBoxColumn();
            gezahlt.HeaderText = "Gezahlt";
            gezahlt.DataPropertyName = "gezahlt";

            dataGridView1.Columns.Add(id);
            dataGridView1.Columns.Add(vorname);
            dataGridView1.Columns.Add(nachname);
            dataGridView1.Columns.Add(geburtstag);
            dataGridView1.Columns.Add(klasse);
            dataGridView1.Columns.Add(schwimmer);
            dataGridView1.Columns.Add(gezahlt);
        }

        public void database()
        {
            string sVerbindung = "server=localhost;uid=root;pwd=test;database=exam;";
            oVerbindung = new MySqlConnection(sVerbindung);

            InitializeComponent();           
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
            
            int row = ((System.Windows.Forms.DataGridViewCell)(dataGridView1.SelectedCells[0])).RowIndex;
            int id = Convert.ToInt32((dataGridView1.Rows[row].Cells[0].Value));
            string vorname = (dataGridView1.Rows[row].Cells[1].Value).ToString();
            string nachname = (dataGridView1.Rows[row].Cells[2].Value).ToString();
            string geburtstag = (dataGridView1.Rows[row].Cells[3].Value).ToString();
            string klasse = (dataGridView1.Rows[row].Cells[4].Value).ToString();
            string schwimmer = (dataGridView1.Rows[row].Cells[5].Value).ToString();
            string gezahlt = (dataGridView1.Rows[row].Cells[6].Value).ToString();

            database();

            string sql = "UPDATE dfz_2007 SET vorname='" + vorname + "', nachname='" + nachname + "', geburtstag='" + geburtstag + "', klasse='" + klasse + "', schwimmer='" + schwimmer + "', gezahlt='" + gezahlt + "' WHERE id=" + id;
/*
              string sql = "INSERT INTO dfz_2007(id, vorname, nachname, geburtstag, " +
                         "klasse, geschlecht, schwimmer, gezahlt)" +
                         "VALUES('4', '" + hase + "', 'Baptist', '11.11.1111', '13', 'weiblich', 'ja', 'ja')";
*/
            DataSetFuellen(sql, oVerbindung);
            this.BindingContext[this.dataGridView1.DataSource].EndCurrentEdit();
            dataGridView1.Refresh();
            dataGridView1.Parent.Refresh();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;

            int row = ((System.Windows.Forms.DataGridViewCell)(dataGridView1.SelectedCells[0])).RowIndex;
            int id = Convert.ToInt32((dataGridView1.Rows[row].Cells[0].Value));
            
            string sVerbindung = "server=localhost;uid=root;pwd=test;database=exam;";
            oVerbindung = new MySqlConnection(sVerbindung);

            string sql = "DELETE FROM dfz_2007 WHERE id=" + id;

            DataSetFuellen(sql, oVerbindung);
            this.BindingContext[this.dataGridView1.DataSource].EndCurrentEdit();
            dataGridView1.Refresh();
        }
    }
}

Gruß
schmitti81
 

Neue Beiträge

Zurück