2013-07-14 52 views
0

我已刪除選定的數據網格,但調試後,然後單擊刪除,但沒有更新。 *對於我可憐的英語感到抱歉。什麼都沒有發生刪除選定的行

這是我的腳本:

//Delete data buku private void DeleteDataBuku() 
{ 

    String con = (@"Data Source=FAJRI-PC\SQLEXPRESS;Initial Catalog=dbPerpustakaan;Integrated Security=True"); 
    for (int i = 0; i < dvgPerpustakaan.Rows.Count; i++) 
    { 
     DataGridViewRow dr = dvgPerpustakaan.Rows[i]; 
     if (dr.Selected == true) 
     { 
      dvgPerpustakaan.Rows.RemoveAt(i); 
      try 
      { 
       SqlConnection db = new SqlConnection(con); 
       db.Open(); 
       SqlCommand dbcmd = db.CreateCommand(); 
       string sql = "delete from Perpustakaan where KodeBuku=" + i; 
       dbcmd.CommandText = sql; 
       SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql, con); 
       DataSet myDataset = new DataSet(); 
       SqlAdapter.Fill(myDataset); 
       db.Close(); 
      } 
      catch(Exception ex) 
      { 
       MessageBox.Show("Error"); 
      } 

     } 
    } 
} 

回答

1

要做出改變的基礎數據庫,你需要執行的命令(在你的情況下刪除命令)。在這種情況下,SqlDataAdapter的整套指令是沒有用的。

for (int i = dvgPerpustakaan.Rows.Count - 1; i >= 0 ; i--) 
{ 
    DataGridViewRow dr = dvgPerpustakaan.Rows[i]; 
    if (dr.Selected == true) 
    { 
     dvgPerpustakaan.Rows.RemoveAt(i); 
     try 
     { 
      using(SqlConnection db = new SqlConnection(con)) 
      using(SqlCommand dbcmd = db.CreateCommand()) 
      { 
       db.Open(); 
       dbcmd.CommandText = "delete from Perpustakaan where KodeBuku=" + i; 
       dbcmd.ExecuteNonQuery(); 
      } 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show("Error"); 
     } 

    } 
} 

此外,爲避免你的循環,你應該從最後一排倒退到第一,因爲RemoveAt移除會改變你的網格行的總個數指標的問題,您使用該值退出循環。

0

沒有測試過下面的代碼,但是對我來說很裸露。我不得不刪除字符串的結尾時,我這樣做

blahblahblah.remove(6,5): 

從位置6排除5個字符,什麼也沒找到一個類似的問題被刪除時,我再次使用blahblahblah

,我首先要解決了這個問題:

blahblahblah=blahblahblah.remove(6,5): 

我相信你有同樣的問題,你是從數據網格中刪除的行而不是重新分配你的數據網格回來,嘗試:

dvgPerpustakaan=dvgPerpustakaan.Rows.RemoveAt(i); 
相關問題