2015-08-19 49 views
-1

我有一個datagridview,我在其中編輯了單元格。一旦用戶輸入了任何文本,他們就會點擊「更新」按鈕,它會更新數據庫。更新表只能在datagridview(c#)中工作一次

問題是,每當我打開應用程序,它只會第一次更新。當我嘗試進行更多修改並單擊「更新」按鈕時,它無法更新數據庫。這是我的代碼。請建議任何解決方案

private void Form1_Load_1(object sender, EventArgs e) 
    { 
     con.Open(); 
     sda = new SqlDataAdapter("Select * from Name", con); 
     ds = new System.Data.DataSet(); 
     sda.Fill(ds); 
     dataGridView1.DataSource = ds.Tables[0]; 
    } 


private void button1_Click(object sender, EventArgs e) 
    {   

     scb = new SqlCommandBuilder(sda); 
     sda.Update(ds); 

    } 
+0

在下面的'scb = new SqlCommandBuilder(sda)中'scb'的值是什麼;'使用調試器..還有你在哪裏重新綁定dataGridView1.DataSource到ds.Tables [0]。你需要清空數據源並將其重新分配給新的數據源。 – MethodMan

+0

如果你想保留數據的副本並在編輯後在gridview上顯示數據..你需要添加一個事件到'RowEdting'如果在DataGridView中可用,那麼在第一次加載它之後,您可以在Session變量中保留一份數據副本,如下所示:DataTable dt = Session [「initialdata」] = ds.Tables [0] as DataTable' then then when你設置datagridview允許內聯編輯,你可以捕獲和重新綁定等..但更新到數據庫,你將需要編寫單獨的代碼..這並不難,你的更新聲明,你不能做更新se lect *從 – MethodMan

+0

我看了一些YouTube教程和一些博客,並以此方式工作。 –

回答

0

其實,我提到的代碼沒有錯。相反,還有一些導致db不被更新的部分。

我還不停刷新按鈕,使用此代碼 -

private void button2_Click(object sender, EventArgs e) 
    { 
     sda = new SqlDataAdapter("Select * from Name", con); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 
     dataGridView1.DataSource = dt; 
    } 

似乎它恢復了回到更新原始數據庫的內容。刪除它成功工作。

+0

這就是我是早些時候告訴你James基本上需要填充它,然後將dataGridView1的數據源重新分配給'dt' – MethodMan

+1

Thanks MethodMan。 –