2016-04-07 8 views
0

実際の問題はコンボボックスの値に応じてデータグリッドビューを設定したいが、値をクリックするとグリッドビューに値を保持するコンボボックス。私はコンボボックスから値を選択するときには、私のコードでは、グリッドビューに表示されますが、私は、それは次の値が、グリッドビューに残らない古いものを示し、次の値をクリックして新しいので、徹底的にTnanks私を導いてくださいcmboボックスの値に応じてデータグリッドビューに行の賢明なデータを追加

 private void Display_Load(object sender, EventArgs e) 
     { 
    string str = "SELECT i_id, i_name FROM sales";   
    comboBox1.DataSource = getData(str);  
    comboBox1.DisplayMember = "i_name"; 
    comboBox1.ValueMember = "i_id"; 
} 

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    int val; 
    Int32.TryParse(comboBox1.SelectedValue.ToString(), out val); 
    string str = "SELECT i_id, i_name, qty, rate,discount FROM sales WHERE i_id = " + val; 
    dataGridView1.DataSource = getData(str); 
} 
+0

[cmboボックスの値に応じてデータグリッドビューに行データを追加します]の重複可能性があります(http://stackoverflow.com/questions/36469 076/add-rows-wise-data-in-data-grid-view-on-the-value-of-cmbo-box) – Panda

答えて

0
ラインで

dataGridView1.DataSource = getData(str);

あなたのDataGridのDataSourceを交換します。

この行を、getDataメソッドの結果をDataSource - Add a Row After Setting DataSource to Datagridviewに追加することで置き換える必要があります。このような

何か:それはあなたが使用している制御に応じて、BindingList<T>を使用したよう

public partial class MyWindow 
{ 
    BindingList<Data_Type> list = new BindingList<Data_Type>(); 

    private void Display_Load(object sender, EventArgs e) 
    { 
     string str = "SELECT i_id, i_name FROM sales"; 
     comboBox1.DataSource = getData(str); 
     comboBox1.DisplayMember = "i_name"; 
     comboBox1.ValueMember = "i_id"; 

     dataGridView1.DataSource = list; 
    } 

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     int val; 
     Int32.TryParse(comboBox1.SelectedValue.ToString(), out val); 
     string str = "SELECT i_id, i_name, qty, rate,discount FROM sales WHERE i_id = " + val; 

     var newData = getData(str); 
     foreach (var line in newData) 
     { 
      list.Add(line); 
     } 
    } 
} 

、これはちょうど、すでに示した項目に新しいデータを追加する必要があります。

+0

は入手できませんでした – ehsanulhaq

+0

詳細な例を示すように答えを更新しました。 –

0

なぜ古い値がメモリに残っていますか?どこに保存/永続化していますか?メモリ/キャッシュにバックストアして使用したい場合は、DataGridViewを再バインドした瞬間です。

私は次のことをお勧めします:におけるメモリコンテナに

SELECT i_id, i_name, qty, rate,discount FROM sales 

ストア結果(DataTableの)とのためにそれを使用します。

は次のようになりこれ、Combo-boxDatagrid viewの両方のためのちょうど1 Sql queryを持っていますバインドのためにフィルタリングされた値を取得し、メモリ内に必要なすべてのデータを持っています

+0

どのように私は再び共有することができます使用するためにメモリにそれを格納することができますか? – ehsanulhaq

+0

ListまたはUse System Runtime Cacheを保存するためのクラス変数を作成し、プログラムの実行中にアイデアの情報が保存されたままにしておき、その情報を次の処理に利用する –

関連する問題