2017-06-06 22 views
0

このように、私はコンボボックスで選択された投薬詳細を設定したいデータグリッドを持っています。私はボタンをクリックするたびにコンボボックスから選択された新しい投薬で新しい行を追加したい。私はボタンクリックイベントで以下のメソッドを実行しています。同じDatagridに複数のSQLクエリを追加する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も一度しか設定しません。

第2の解決策は、現在のitemsourceを取得し、それをDataTableに変換することです。 次のようなものがあります。DataTable table =(DataGrid_saleItems.ItemsSource from DataRowView).toTable() コードを続けていくと、それも埋められます。

関連する問題