2017-06-06 33 views
0

所以...我有一個datagrid,我想填充在組合框中選擇的藥物細節。我想每次點擊一個按鈕時添加一個新行,並在組合框中選擇新的藥物。我在按鈕單擊事件中運行下面的方法。將多個SQL查詢添加到同一個Datagrid c#WPF

private void FillSalesItemGrid() 
     { 

      using (SqlConnection con = new SqlConnection(conn)) 
      { 

       con.Open(); 

       if (!string.IsNullOrEmpty(comboBox_select_Item.Text.ToString())) 
       { 
        sqlBuilder.Append("SELECT * FROM Medication WHERE MedName = @medName"); 
        cParameters.Add(new SqlParameter("@medName", comboBox_select_Item.Text.ToString())); 
       }     

       SqlCommand cmd = new SqlCommand(sqlBuilder.ToString(), con); 
       if (cParameters.Count != 0) 
       { 
        cmd.Parameters.AddRange(cParameters.ToArray()); 
       } 
       SqlDataAdapter da = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable("Medication"); 
       da.Fill(dt); 

       dataGrid_saleItems.ItemsSource = dt.AsDataView(); 
       sqlBuilder.Clear(); 
       cParameters.Clear(); 



      } 

目前它顯示當前選擇的組合框項目。每次單擊按鈕時都不會添加新的「結果」。我希望它能像你在POS上發起一個項目一樣工作。任何幫助將不勝感激。

回答

0

而不是創建一個新的Datatable每次你必須創建一次,然後用每個函數調用填充它(SqlDataAdapter.Fill完全是這樣)。 這樣你也只設置一次itemsource。

第二種解決方案是檢索當前itemsource,將其轉換爲DataTable。 Someething like:DataTable table =(dataGrid_saleItems.ItemsSource as DataRowView).toTable() 如果您繼續使用您的代碼,它也會填滿它。