У меня есть программа, в которой пользователь может добавлять профили, а также редактировать их. Я хотел, чтобы представление таблицы данных было проще просматривать, поэтому я добавил в него несколько строк, но когда я вернусь к редактированию строки, внесу изменения в базу данных, а затем сохраню, он добавит целый новый набор строк! Как я могу предотвратить это? Я попытался очистить сетку данных с помощью dataGridView1.Rows.Clear();
, но это выдает эту ошибку: System.ArgumentException: «Не удается очистить этот список».
Вот код, который я написал для добавления нескольких строк:
private void pictureBox1_Click(object sender, EventArgs e)
{
tabTasks.SelectedIndex = 1;
RefreshDBConnection();
dataGridView1.Rows[0].Cells["FIRST NAME"].Value = dataGridView1.Rows[0].Cells["FIRST NAME"].Value + " " + dataGridView1.Rows[0].Cells["LAST NAME"].Value + Environment.NewLine + dataGridView1.Rows[0].Cells["ADDRESS #1"].Value + " " + dataGridView1.Rows[0].Cells["ADDRESS #2"].Value + Environment.NewLine + dataGridView1.Rows[0].Cells["CITY"].Value + ", " + dataGridView1.Rows[0].Cells["STATE"].Value + " " + dataGridView1.Rows[0].Cells["ZIP CODE"].Value + Environment.NewLine + dataGridView1.Rows[0].Cells["COUNTRY"].Value + Environment.NewLine + dataGridView1.Rows[0].Cells["PHONE"].Value + Environment.NewLine + dataGridView1.Rows[0].Cells["EMAIL"].Value;
}
А вот строки для редактирования профиля, если это поможет:
private void buttonSave_Click(object sender, EventArgs e)
{
ConnectToDataBase();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
//string query = "update Profiles set [PROFILE NAME]='" + textBox1.Text + "', [LOGIN EMAIL]='" + textBox2.Text + "', [PASSWORD]='" + textBox3.Text + "', [FULL NAME]='" + textBox4.Text + "', [CARD NUMBER]='" + textBox5.Text + "', [EXP MONTH]='" + comboBox1.Text + "', [EXP YEAR]='" + comboBox2.Text + "', CVV='" + textBox6.Text + "' where ID='" + Convert.ToInt32(textBox7.Text) + "'";
string query = "update Profiles set [PROFILE NAME]= @Profile, [FIRST NAME]= @FName, [LAST NAME]= @LName, [ADDRESS #1]= @Add1, [ADDRESS #2]= @Add2, [CITY]= @City, [ZIP CODE]= @Zip, [STATE]= @State, [COUNTRY]= @Country, [PHONE]= @Phone, [EMAIL]= @Email, [CARD TYPE]= @CardType, [CARD NUMBER]= @CardN, [EXP MONTH]= @EXPM, [EXP YEAR]= @EXPY, CVV= @CVV where ID = @Id";
command.Parameters.AddWithValue("@Profile", txtProfile.Text);
command.Parameters.AddWithValue("@FName", txtFirstName.Text);
command.Parameters.AddWithValue("@LName", txtLastName.Text);
command.Parameters.AddWithValue("@Add1", txtAddress1.Text);
command.Parameters.AddWithValue("@Add2", txtAddress2.Text);
command.Parameters.AddWithValue("@City", txtCity.Text);
command.Parameters.AddWithValue("@Zip", txtZip.Text);
command.Parameters.AddWithValue("@State", comState.Text);
command.Parameters.AddWithValue("@Country", comCountry.Text);
command.Parameters.AddWithValue("@Phone", txtPhone.Text);
command.Parameters.AddWithValue("@Email", txtEmail.Text);
command.Parameters.AddWithValue("@CardType", comCardType.Text);
command.Parameters.AddWithValue("@CardN", txtCard.Text);
command.Parameters.AddWithValue("@EXPM", comboEXPM.Text);
command.Parameters.AddWithValue("@EXPY", comboEXPY.Text);
command.Parameters.AddWithValue("@CVV", txtCVV.Text);
command.Parameters.AddWithValue("@ID", txtID.Text);
command.CommandText = query;
command.ExecuteNonQuery();
RefreshDBConnection();
connection.Close();
MessageBox.Show("Profile Edited");
this.Close();
}
и, наконец, вот изображение того, что происходит, когда я редактирую, а затем сохраняю, с некоторой информацией, заблокированной по очевидным причинам:
Пожалуйста, дайте мне знать, если я могу дать вам больше информации, спасибо! (используя c # btw)