Почему мой DataGridView не обновляет изменения в базовом DataTable

57
5

Это мой код:


    private void button1_Click(object sender, EventArgs e)
{
DataTable table = new DataTable();
using (SqlCeDataAdapter sqlCeDataAdapter = new SqlCeDataAdapter("SELECT * FROM test", sqlCeConnection))
{
sqlCeDataAdapter.Fill(table);
}
dataGridView1.DataSource = table;
}

private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show(((DataTable)dataGridView1.DataSource).Rows.Count.ToString());
}


То, что я пытаюсь сделать, это обновить базовую базу данных, но согласно этому учебнику, базовому DataTable необходимо будет отражают изменения, сделанные на DataGridView, когда я редактирую строки. Я просто запускаю приложение, нажимая button1, затем удаляя некоторые строки в DataGridView, а затем нажав button2, чтобы узнать, сколько строк я получаю. В этом приложении я получаю такое же количество строк, что и перед удалением строк, но если я заменил dataGridView1 DataSource на DataTable, который я заполняю сам (вызывая DataTable.NewRow() и т.д.), Изменения отражаются на DataTable каждый раз, когда я удаляю строку (базовый DataTable содержит меньше строк после того, как я удалю некоторые из них).

спросил(а) 2010-10-03T07:27:00+04:00 10 лет назад
1
Решение
82

Ваш код кажется неполным, даже если вы сравниваете его со статьей, о которой вы говорите.


В самой статье это BindingSource, который используется для достижения тех функций, которые вы пытаетесь достичь. См. Приведенный ниже код, используемый в этой статье.


//BindingSource to sync DataTable and DataGridView
BindingSource bSource = new BindingSource();

Поскольку вы, кажется, узнаете об этом, я не буду давать вам точный код, но указатели в общем направлении.

Посмотрите, как приведенный выше объект используется в примере. Это должно помочь вам моделировать поведение, похожее на то, что вы ищете.


Кроме того, еще один намек, как только вы внесете некоторые изменения после привязки сетки к источнику данных, вам нужно ОБРАТИТЬ источник данных, чтобы обновить себя. Это также рассматривается в примере кода учебника.


Надеюсь, это поможет! Я также предлагаю вам прочитать MSDN, связанные с BindingSource и DataAdapter, так как вам нужно использовать оба компонента для совместной работы, чтобы вы могли работать.

ответил(а) 2010-10-03T08:22:00+04:00 10 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема