2016-05-12 5 views
1

最初の選択に基づいて2番目のコンボボックスを変更しようとしています。最初のコンボボックスの場合は、データベースのテーブルからデータを取得しています。例えばc#wpfコンボボックスの選択

  { 
     SqlConnection conn = new SqlConnection("Server = localhost;Database = autoser; Integrated Security = true"); 
     SqlDataAdapter da = new SqlDataAdapter("Select id_type,type FROM types", conn); 


     DataSet ds = new DataSet(); 

     da.Fill(ds, "types"); 



     typescb.ItemsSource = ds.Tables[0].DefaultView; 
     typescb.DisplayMemberPath = ds.Tables[0].Columns["type"].ToString(); 
     typescb.SelectedValuePath = ds.Tables[0].Columns["id_type"].ToString(); 

    } 

最初のコンボボックスで私は2番目でトラックを選択した場合、トラックのリストが表示されるはずです、または私は車を選択した場合、第二の私のデータベース内にある車のリストを表示されます。私はこのサイトのいくつかの投稿を見て、彼らは私を助けなかったので、私はこの質問を投稿しています。私の悪い英語のために申し訳ありません!

あなたは、このような として、(あなたの最初の ComboBoxからアイテム別名)カテゴリを選択している
+0

Googleカスケードドロップダウン。これは解決された問題です。 – Crowcoder

答えて

0

、あなたはタイプによってそれらをフィルタリングすることができるよりも、あなたの車が保存されているデータベースからデータを読み取ることができます""。 LINQで例えば

:もちろん

var cars = readFromDbList.Where(item => item.Type == "car"); 

、この例では、文字列としてタイプを使用している、とitemオブジェクトがType性質を持っていますが、独自の実装を使用します。

0

WPFを使用することの大きな点の1つは、バインディングを使用してUIを更新することです。この場合、UIを強制的に更新しようとしています。アンダーラインデータモデルの変更に基づいてUIを更新する必要があります。 ORMレイヤーを生成するためにSQLMetalを使用すること、データを取得するLINQ、レンダリングするWPFの使用をお勧めします。

私は設定する前に記事を書きました。 http://netlegger.blogspot.ca/2013/05/using-linq-to-sql-with-sqlmetal-wpf.html

すべての設定が完了したら、プロパティの変更イベントに基づいてバインドをトリガーできます。下線データモデルで変更したものはすべてUIに反映されます。

0

あなたは)(..

con.Open SelectIndexChangeイベントのコードである必要があります。 文字列str = "Tablenameからの選択* CarName = '" + ComboBox1.Text + "'" Groupby CarName; SqlCommand cmd =新しいSqlCommand(str、con); SqlDataReader dr = cmd.ExecuteReader(); if(dr.Read()) { ComboBox1.Text = dr ["CarName"]。ToString();

  con.Close(); 
     } 
    } 
+0

私はこのコードを試しましたが、2番目のコンボボックスには何も表示されません – user5827232

関連する問題