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
Gruß
schmitti81
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