я работаю над приложением Windows Forms, которое позволяет пользователю программно обновлять базу данных (обновлять количество значений ячеек один раз) и вручную (обновлять одно за другим). процесс нормально работает в ручном обновлении, но при попытке обновления программно сохраняются только некоторые изменения.
Когда я смотрю на datagridview после программного изменения, я вижу, что значения были изменены, но когда я закрываю программу и снова открываю ее, остаются только некоторые изменения.
Что странно, так это то, что когда я щелкаю заголовок столбца, чтобы отсортировать значения, прежде чем закрыть его (значения - это даты), некоторые даты не в порядке. те же даты не сохраняются в базе данных.
Как это исправить? Как сделать, чтобы все изменения сохранялись?
Вот мой связанный код:
private void save_btn_Click(object sender, EventArgs e)
{
dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
string t = "";
Label l;
int space;
for (int c = 1; c < tableLayoutPanel1.ColumnCount; c++)
{
for (int r = 1; r < tableLayoutPanel1.RowCount; r++)
{
l = (Label)tableLayoutPanel1.GetControlFromPosition(c, r);
if (l != null)
{
t = l.Text;
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
if (dataGridView1[2, i].Value.ToString().Equals(t))
{
dataGridView1[4, i].Value = GetDate();
}
}
}
}
}
bindingSource1.EndEdit();
dataAdapter.Update((DataTable)bindingSource1.DataSource);
dataGridView1.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
}
Изменить: код обновления вручную:
private void saveDB_Btn_Click(object sender, EventArgs e)
{
try
{
bindingSource1.EndEdit();
dataAdapter.Update((DataTable)bindingSource1.DataSource);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Привязка Datagridview к коду базы данных:
void GetData(string selectCommand)
{
try
{
dataAdapter = new SqlCeDataAdapter(selectCommand, conn);
commandBuilder = new SqlCeCommandBuilder(dataAdapter);
table = new DataTable();
dataAdapter.Fill(table);
bindingSource1.DataSource = table;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}