2016-03-20 126 views
-1

刪除stockdataGridView1的選定行後,它不刷新。請在刪除所選行後告訴我如何刷新。我是否需要重新打開表單或添加另一個按鈕進行刷新?如何刷新DataGridView後刪除行格式DataGridView和數據庫在C#中?

private void stockdataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 

} 

private void Report_Load(object sender, EventArgs e) 
{ 
    string connectionString = @"Server=.\SQLEXPRESS; Database = stock; integrated Security = true"; 
    SqlConnection connection = new SqlConnection(connectionString); 
    string query = "SELECT * FROM stocktable1"; 
    SqlCommand command = new SqlCommand(query, connection); 
    connection.Open(); 
    SqlDataReader reader = command.ExecuteReader(); 
    List<Stock> stocks = new List<Stock>(); 
    while (reader.Read()) 
    { 
     Stock stock = new Stock(); 
     stock.id = (int)reader["id"]; 
     stock.gsm = reader["gsm"].ToString(); 
     stock.color = reader["color"].ToString(); 
     stock.size = reader["size"].ToString(); 
     stock.yard = reader["yard"].ToString(); 
     stock.meter = reader["meter"].ToString(); 
     stock.quantity = reader["quantity"].ToString(); 
     stock.supplier = reader["supplier"].ToString(); 
     stock.purpose = reader["purpose"].ToString(); 
     stock.chalanno = reader["chalanno"].ToString(); 
     stocks.Add(stock); 
    } 
    reader.Close(); 
    connection.Close(); 
    stockdataGridView1.DataSource = stocks; 
} 

private void deletebutton_Click(object sender, EventArgs e) 
{ 

    int id = (int)stockdataGridView1.CurrentRow.Cells["id"].Value; 
    string connectionString = @"Server=.\SQLEXPRESS; Database = stock; integrated Security = true"; 
    SqlConnection connection = new SqlConnection(connectionString); 
    string query = "delete from stocktable1 where id=" + id; 
    SqlCommand command = new SqlCommand(query, connection); 
    connection.Open(); 
    int rowaffected = command.ExecuteNonQuery(); 
    connection.Close(); 
    stockdataGridView1.Update(); 
    stockdataGridView1.Refresh(); 

    MessageBox.Show("deleted"); 
} 

} }

enter image description here

+1

你需要給你打電話刪除該行'Report_Load'後,如果這是你如何綁定在初始加載數據這個方法..怎麼回事,你希望將DataGrid知道什麼被刪除了..? – MethodMan

+0

當我在刪除 – anasbiswas

+1

之後調用這個函數時,Report_Load(object sender,EventArgs e)方法的參數應該更頻繁地使用,你的代碼中包含重複的靜態語句調用這樣的建立連接,包含函數內的那些語句和調用該功能爲您節省了重寫這些狀態的麻煩! – Aboudi

回答

0

添加我在下面創建的新方法,並調整原始方法,如下所示,當您加載網格並刪除它時應調用該方法。

正如我在我的評論中提到的,您的代碼需要調整,使用函數更加簡單。

 private void stockdataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 

     } 

     private void UpdateAndLoad() 
     { 

      string connectionString = @"Server=.\SQLEXPRESS; Database = stock; integrated Security = true"; 
      SqlConnection connection = new SqlConnection(connectionString); 
      string query = "SELECT * FROM stocktable1"; 
      SqlCommand command = new SqlCommand(query, connection); 
      connection.Open(); 
      SqlDataReader reader = command.ExecuteReader(); 
      List<Stock> stocks = new List<Stock>(); 
      while (reader.Read()) 
      { 
       Stock stock = new Stock(); 
       stock.id = (int)reader["id"]; 
       stock.gsm = reader["gsm"].ToString(); 
       stock.color = reader["color"].ToString(); 
       stock.size = reader["size"].ToString(); 
       stock.yard = reader["yard"].ToString(); 
       stock.meter = reader["meter"].ToString(); 
       stock.quantity = reader["quantity"].ToString(); 
       stock.supplier = reader["supplier"].ToString(); 
       stock.purpose = reader["purpose"].ToString(); 
       stock.chalanno = reader["chalanno"].ToString(); 
       stocks.Add(stock); 
      } 
      reader.Close(); 
      connection.Close(); 
      stockdataGridView1.DataSource = stocks; 
     } 

     private void Report_Load(object sender, EventArgs e) 
     { 
      UpdateAndLoad(); 
     } 

     private void deletebutton_Click(object sender, EventArgs e) 
     { 

      int id = (int)stockdataGridView1.CurrentRow.Cells["id"].Value; 
      string connectionString = @"Server=.\SQLEXPRESS; Database = stock; integrated Security = true"; 
      SqlConnection connection = new SqlConnection(connectionString); 
      string query = "delete from stocktable1 where id=" + id; 
      SqlCommand command = new SqlCommand(query, connection); 
      connection.Open(); 
      int rowaffected = command.ExecuteNonQuery(); 
      connection.Close(); 
      stockdataGridView1.Update(); 
      stockdataGridView1.Refresh(); 

      MessageBox.Show("deleted"); 
      UpdateAndLoad(); 
     } 
+0

非常感謝你:) – anasbiswas

+0

@anasbiswas代碼現在更新!不客氣 :) – Aboudi

0

要刷新行添加或刪除你需要重新設置網格的DataSource屬性,然後調用DataGridView對象DataBind()方法後的網格。對於您的情況,您可以在類級別定義數據源,即您的List<Stock>對象,並捕獲刪除按鈕的單擊事件,如前所述將數據源重新綁定到數據網格視圖。

相關問題