2017-07-27 43 views
0

我製作了一個應用程序,允許用戶通過datagridview(由列和組合框組成)的方式將數據添加到數據庫中。我編寫了應用程序來刷新datagridview,當用戶單擊按鈕時以及數據發送到數據庫時。刷新之後,datagridview的空列將填充先前的用戶填充數據。它適用於列,但不適用於我的組合框。在刷新之後,我希望組合框選擇先前插入到我的數據庫中的項目(組合框是用戶可以選擇添加到數據庫的已存在項目列表)。將列數據庫中的數據放入組合框中作爲結果

代碼我的按鈕:

private void metroButton1_Click(object sender, EventArgs e) 
    { 
     SqlConnection maConnexion = new SqlConnection("Server= localhost; Database= Seica_Takaya;Integrated Security = SSPI; "); 
     maConnexion.Open(); 

     foreach (DataGridViewRow row in dataGridView1.Rows) 
     { 


      if ((row.Cells[20].Value != null) && (bool)row.Cells[20].Value) 
      { 

       SqlCommand command = maConnexion.CreateCommand(); 


       command = new SqlCommand("update FailAndPass set [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]", maConnexion); 
       command.Parameters.AddWithValue("@Machine", row.Cells[1].Value != null ? row.Cells[1].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@Serial", textBox1.Text); 
       command.Parameters.AddWithValue("@pc", row.Cells[3].Value != null ? row.Cells[3].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@BName", row.Cells[4].Value != null ? row.Cells[4].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@BNumber", row.Cells[5].Value != null ? row.Cells[5].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@T", row.Cells[6].Value != null ? row.Cells[6].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@DT", row.Cells[7].Value != null ? row.Cells[7].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@TT", row.Cells[8].Value != null ? row.Cells[8].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@TS", row.Cells[9].Value != null ? row.Cells[9].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@FC", row.Cells[11].Value != null ? row.Cells[11].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@Mess", row.Cells[10].Value != null ? row.Cells[10].Value : DBNull.Value);     
       command.Parameters.AddWithValue("@TTP", row.Cells[12].Value != null ? row.Cells[12].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@RV", row.Cells[13].Value != null ? row.Cells[13].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@VR", row.Cells[14].Value != null ? row.Cells[14].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@PT", row.Cells[15].Value != null ? row.Cells[15].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@FD", row.Cells[16].Value != null ? row.Cells[16].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@RD", row.Cells[17].Value != null ? row.Cells[17].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@RT", row.Cells[18].Value != null ? row.Cells[18].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@RO", row.Cells[19].Value != null ? row.Cells[19].Value : DBNull.Value); 
       command.Parameters.AddWithValue("@FCBO", row.Cells[20].Value != null ? row.Cells[20].Value : DBNull.Value); 

       command.ExecuteNonQuery(); 




      } 
     } 

     maConnexion.Close(); 
     this.Hide(); 
     Admin admin = new Admin(); 
     admin.Show(); 
    } 

數據庫: Pics 應用: pic

謝謝!

+0

檢查了這一點:[GridView的回發期間丟失數據](https://stackoverflow.com/questions/4509676/gridview-loses-data-during-postback)或[GridView.DataSource回發期間爲空] (https://stackoverflow.com/questions/26931784/gridview-datasource-is-null-during-postback) –

+0

@RigertaDemiri,問題是關於Winforms的DataGridView控件。 ASP.NET沒有'DataGridView'控件。 – Fabio

+0

我會去看看 –

回答

0

您需要爲組合框項目提供數據,並配置組合框以將選定項目與來自行的值「鏈接」。

var failCodes = new List<string> 
{ 
    "Fail one"; 
    "Fail two"; 
    "Fail three"; 
} 

comboboxColumn.DataSource = failCodes; 
comboboxColumn.DataPropertyName = "FailCodeByOP"; //will select item with same value 
+0

但他如何選擇已經在數據庫中更新的項目? –

+0

@AlexisRin,將根據您定義爲「DataPropertyName」的列中的值自動選擇項目。在你的情況下,當'FailCodeByOP = 1''DataGridViewComboBoxColumn'將​​嘗試顯示具有'Code = 1'的項目,如果在DataGridViewComboBoxColumn.DataSource中沒有找到這樣的項目,將會顯示空單元格 – Fabio

+0

好吧,我會試試它的權利現在 –

相關問題