2016-10-22 2 views
0

Как показать данные сразу в представлении сетки данных Это вставлено или обновлено. Я должен Re начать проект, чтобы показать, что Data.I Используется Update() И Refresh() Но не работает для меняКак показать DataGridview Обновлено После вставки или обновления

private void UpdateDebtbutton_Click(object sender, EventArgs e) { SqlConnection conn = ForConnection(); conn.Open(); using (conn) { if (paytextBox.Text != "") { SqlCommand cmd = new SqlCommand("spdebth", conn); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@id", SqlDbType.Int).Value =customerIDTextBox.Text.ToString(); cmd.Parameters.Add("@text", SqlDbType.Int).Value = paytextBox.Text.ToString(); cmd.ExecuteNonQuery(); MessageBox.Show("Record updated"); spSelectAllCustomerDataGridView.Update(); spSelectAllCustomerDataGridView.Refresh(); conn.Close(); } } }

+0

Установить источник данных снова. – Berkay

+0

@Berkay Спасибо Дорогой его работа –

+0

с использованием DataTable в DatatGridView вы пробовали dataTable.AcceptChanges(); – JohnG

ответ

0

Refresh и Update методы не используются для обновления данных, но перекрасить WinForms управление.

Есть несколько способов отображения обновленных данных в DataGridView:

  1. Использование BindingList в качестве источника данных, но для этого требуется объект для реализации INotifyPropertyChanged
  2. Обновление строки на DataGridView вручную
  3. Rebind DataSource

Ниже приведен пример третьего пункта:

private void UpdateDebt(int customerId, int debt) 
{ 
    var debts = (List<Debt>)spSelectAllCustomerDataGridView.DataSource; 
    var item = debts.First(x => x.Id == customerId); 
    item.Debt = debt; 

    spSelectAllCustomerDataGridView.DataSource = null; 
    spSelectAllCustomerDataGridView.DataSource = debts; 
} 

Вам необходимо переустановить DataGridView, чтобы просмотреть изменения.

Смежные вопросы