Следующий код отлично работает, чтобы установить фильтр в таблице на основе значения в другом (чтобы прокрутить в один DataGridView, еще один отображает правильные данные):C# 2 DataGridViews, один устанавливает фильтр на другой (это работает отлично), но Delete в «master», вызывающем havoc
private void dgvCompany_SelectionChanged(object sender, EventArgs e)
{
if (dgvCompany.CurrentCell != null)
{
DataView dv = new DataView();
dv.Table = htctDataSet.co_lang;
int irow = dgvCompany.CurrentCell.RowIndex;
DataRow daRow = htctDataSet.company.Rows[irow]; // use this to get value used in filter below:
string s = daRow.Field<int>("company_id").ToString(); // this throw exception after doing a delete
dv.RowFilter = "company_id = " + s; //edited to show above line is problem
dgvLang.DataSource = dv;
}
}
Но когда я удалить строку в компании (таблицу в приведенном выше используются для установки фильтра в другой таблице), то dv.RowFilter линия генерирует: необработанного исключение типа
'System.Data.DeletedRowInaccessibleException'
Функция удаления код:
int irowCo = dgvCompany.CurrentCell.RowIndex;
DataTable dtCo = this.htctDataSet.company;
dtCo.Rows[irowCo].Delete();
//dtCo.AcceptChanges();
Если я раскомментировать выше линии, то никакие исключения не выбрасываются, НО, то я не могу сохранить в базе данных
Сохранить код (не показывать сделки) :
this.companyBindingSource.EndEdit();
this.companyTableAdapter.Update(this.htctDataSet.company);
Мой вопрос Как я ловушку выше исключение или как я работаю вокруг AcceptChanges(), так что I C затем сохранить в базу данных?
Могли бы вы не установить фильтр или DataSource второй DataGridView, чтобы ни один/нуль, прежде чем удалить? Затем перетащите его после удаления? – JohnG
Я отредактировал источник, чтобы показать, что проблема связана с первой/главной таблицей. Извините за путаницу. – user1119520