У меня есть очень простая таблица с двумя столбцами строки, отмеченными уникальными. Может ли кто-нибудь сказать мне, как подключить datagridview, чтобы разрешить самые основные операции crud. Я намерен использовать только сетку и никаких дополнительных элементов управления. Это означает наличие столбца ссылки для операции удаления.Winforms DataGridView SQL compact CRUD пример
Я попробовал миллион итераций, имеющих таблицы данных, привязка источников, адаптеры данных, команда строителей ..
Большое спасибо.
void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
}
private void bindingSource_PositionChanged(object sender, EventArgs e)
{
// if the user moves to a new row, check if the
// last row was changed
BindingSource thisBindingSource =
(BindingSource)sender;
DataRow ThisDataRow =
((DataRowView)thisBindingSource.Current).Row;
if (ThisDataRow == _lastDataRow)
{
// we need to avoid to write a datarow to the
// database when it is still processed. Otherwise
// we get a problem with the event handling of
//the DataTable.
throw new InvalidOperationException("It seems the" +
" PositionChanged event was fired twice for" +
" the same row");
}
UpdateRowToDatabase();
// track the current row for next
// PositionChanged event
_lastDataRow = ThisDataRow;
}
private void UpdateRowToDatabase()
{
if (_lastDataRow != null)
{
if (_lastDataRow.RowState == DataRowState.Modified
|| _lastDataRow.RowState == DataRowState.Added
|| _lastDataRow.RowState == DataRowState.Deleted)
{
DataRow[] rows = new DataRow[1];
rows[0] = _lastDataRow;
_dataAdapter.Update(rows);
}
}
}
void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
Debug.WriteLine(string.Format("Click Col: {0} Row:{1}", e.ColumnIndex, e.RowIndex));
if (!_edit && e.ColumnIndex == 0)
{
if (e.RowIndex < _dataTable.Rows.Count)
{
DataRow[] rows = new DataRow[1];
rows[0] = _dataTable.Rows[e.RowIndex];
_bindingSource.RemoveCurrent();
_dataAdapter.Update(rows);
}
}
}
Это тронуло меня не вперед конца, спасибо. У меня все еще проблема с удалением записей. – Neil
Ваш стол должен иметь первичный ключ - не так ли? – ErikEJ
Да, у меня был первичный ключ. В конце я просто использовал элемент управления навигатором, на котором есть кнопка удаления. – Neil