我有2個datagridviews包含一個表,給一些更多的空間插入文本。要添加,我不想顯示前2列,它們包含主鍵和外鍵,我已經找到一種方法來添加外鍵之前保存(主要是自動增量)。現在保存這個時,所有工作正常。但是,當我想要刪除一行......已刪除的行信息無法通過行訪問
就在數據集發回數據庫之前,我添加這樣的外鍵,現在我必須這樣做,否則adapt.Update()
會拋出一個錯誤說該列不能爲空。
private void SaveAnalyseTable()
{
dgvAnalyse1.EndEdit();
dgvAnalyse2.EndEdit();
for (int x = 0; x < dgvAnalyse1.Rows.Count-1; x++) //add to table, -1 else it will try to insert Id into an empty row (out of index error)
{
if (x != dgvAnalyse1.Rows.Count) //if it is the last one, don't execute
{
if (string.IsNullOrEmpty(patientsDataset.Tables["Analyse"].Rows[x]["PatientId"].ToString()) && (patientsDataset.Tables["Analyse"].Rows[x].RowState != DataRowState.Deleted)) .
{
patientsDataset.Tables["Analyse"].Rows[x]["PatientId"] = currentPatient.PatientId;
}
}
}
}
在上面的代碼,我不能這些外國號添加到datagridview的,因爲該列沒有 誤差在這裏上面的代碼拋出,當我試圖刪除一行像這樣:
private void btnAnalyseDelete_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow item in dgvAnalyse1.SelectedRows)
{
dgvAnalyse1.Rows.RemoveAt(item.Index);
int index = item.Index;
if (index != -1)
{
patientsDataset.Tables["Analyse"].Rows[index].Delete();
}
}
SaveAllData(); //even when saving the whole dataset to the database, still get the error
}
所以:先保存,然後刪除不起作用,它立即拋出錯誤。 在保存之前刪除確實有效,它不能是同一個索引,所以它必須對我猜測的數據集中的行做些什麼。
編輯 - > updateDataSet - > SaveToDatabase - >刪除行 - >錯誤。
編輯 - > UpdateDataSet - > deleteRow - > updateDataSet - > SaveToDatabase - >罰款,除非相同指數
我敢肯定,保存數據時,它會重新填寫表格的數據集。
如此接近..感謝的順序! – CularBytes