2012-09-12 78 views
0

我有一個向我的datagridview添加新行的問題。我想通過添加按鈕完成它。我基於本教程的綁定http://msdn.microsoft.com/en-us/library/fbk67b6z.aspx,所以我的代碼看起來幾乎完全一樣。是否有可能:首先 - 添加一個新的行到datagrid綁定的數據源,然後通過點擊更新按鈕來更新數據庫?我設法克隆選定的行,將其用作新行的模板。謝謝你的幫助。Datagridview中的CRUD操作綁定到SQL數據庫

回答

0

那麼,我不能做這樣的事情 dataGridView1.Rows.Add(selected_row);它引發一個異常。而我 不知道如何在我的數據庫中插入一行。 - user1651521 1小時 前

不能將行直接添加到數據網格的數據網格中。您必須將新行添加到綁定表。

因此,如果您使用與該示例相同的代碼,則需要向DataTable添加一條新記錄,該記錄是bindingsource對象的數據源。因此,像這樣:

private void addButton_Click(object sender, System.EventArgs e) 
{ 
    //I'm assuming your datatable is a member level variable 
    //otherwise you could get it through the grid 
    //have the datatable send you back a new row 
    DataRow newRow = table.NewRow(); 
    //populate your new row with default data here 
    //.... 
    //add the new row to the data table 
    table.Rows.Add(newRow); 
} 
+0

謝謝。我也使用foreach循環來複制值來填充我的新行。 – Mateusz

+0

我有另一個問題。我將編輯單元格的顏色更改爲綠色,但提交數據後,我想恢復其默認顏色。你能幫助我嗎? – Mateusz

+0

當我從表中刪除一行table.Rows.RemoveAt(deleted_row_index)UserDeletedRow事件它將它從視圖和表中刪除,但提交對數據庫的更改不會更改任何內容。當我重新加載數據庫時,仍然有那些被刪除的行。 – Mateusz

0

你可以使用的是你的DataGridView的OnRowsAdded事件。以下是此活動的鏈接:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.onrowsadded.aspx。在這種情況下,您可以迭代每一行添加的行,並使用Insert語句將它們插入到數據庫中。我從來沒有使用過這個事件,但它看起來像你所需要的。

編輯:我剛剛在你的例子中看到了這一點。

private void submitButton_Click(object sender, System.EventArgs e) 
{ 
    // Update the database with the user's changes. 
    dataAdapter.Update((DataTable)bindingSource1.DataSource); 
} 

如果您已經激活了您的DataGridView的編輯模式和一個提交按鈕,這是不是工作?您必須有權訪問您的SqlDataAdapter,因此將其聲明爲全局變量,您可以在提交按鈕的單擊事件中使用它。

+0

但我不能添加行programmaticly做DGV,因爲它一定到數據所以... – Mateusz

+0

如果從數據庫得到數據,然後把它放在一個表像的例子你發佈了,你應該仍然可以插入你的新行。什麼阻止你在數據庫中插入新行? –

+0

嗯,我不能做那樣的dataGridView1.Rows.Add(selected_row); 它引發異常。我不知道如何在我的數據庫中插入一行。 – Mateusz

相關問題