我有一個表單,其中包含一個過濾的datagridview(隱藏條目標記「關閉」)基於MySQL數據庫中的數據集和tableadapter。我被困在一個部分,涉及啓動一個對話框的形式,其中包含另一個datagridview基於相同的數據集,顯示錶中的所有條目。我希望能夠使用複選框列標記選擇那些「關閉」,單擊「關閉這些記錄」按鈕,關閉該對話框並將這些更改反映在過濾的datagridview中。從c#中修改datagridview MySQL更新
我試過多種方法來實現這一點,並沒有運氣。基本上,最接近的嘗試導致了空數據集時,我返回到過濾datagridview的....
我過濾的datagridview在這裏填寫:
this.dtClientTableAdapter.FillBy(this.DS.dtClient);
的對話框這裏展開:
private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
CloseAgreement dlgCloseAgree = new CloseAgreement();
dlgCloseAgree.ShowDialog();
refreshRecords();
}
未過濾的DataGridView顯示在對話框中,在這裏填寫:
this.dtClientTableAdapter.Fill(this.DS.dtClient);
要設置使用RowValidated事件的變化:
private void dataGridView1_RowValidated(object sender, DataGridViewCellEventArgs e)
{
DataTable changes = ((DataTable)dataGridView1.DataSource).GetChanges();
if (changes != null)
{
MySqlCommandBuilder mcb = new MySqlCommandBuilder(mySqlDataAdapter);
mySqlDataAdapter.UpdateCommand = mcb.GetUpdateCommand();
mySqlDataAdapter.Update(changes);
((DataTable)dataGridView1.DataSource).AcceptChanges();
}
}
一切似乎直到關閉對話框做工精細。當以第一種形式返回到已過濾的datagridview時,datagridview將爲空,並通過重新填充tableadapter進行刷新是平淡無奇的。在調試時,關閉解釋空datagridview的對話框表單時,整個數據集爲空。有趣的是,當對話框關閉並且沒有進行任何更改時,第一個表格中的過濾數據網格仍然處於完好狀態。沒有可行的結果嘗試了其他幾種不同的方法。
我已經省略了設計器聲明,但如果需要澄清,我可以編輯該問題。
我必須俯視一些簡單的東西。這甚至是正確的方法嗎?任何幫助表示讚賞。
那麼過濾並不是真正的問題。當編輯和提交時,問題出現在二級或子級datagridview中。當返回到主數據網格視圖時,它是空的,因爲由於某種原因數據集已被設置爲空。然後出於某種原因,我無法手動重新加載數據集,當主窗體在與輔助datagridview關閉後的對話框激活時。有關於此的任何想法? – user2409901
@ user2409901沒有更多的代碼就無法猜測。我不明白爲什麼要用相同的數據向用戶展示兩個DGV。通常你會有一個DGV和一個編輯記錄對話框,讓他們只能從列表中編輯一條記錄。在這種情況下,您可以將包含該記錄的DataTableRow傳遞給對話框,並直接編輯已經綁定到DGV的行的內容。 – Tergiver