0
私はwinformsアプリケーションをC#でいくつかのcomboboxes
と一緒に使用しています。これらのコンボボックスは、SQLデータベースからのデータを表示します。私はlistview
でデータを表示するためにコンボボックスを得ることができますが、私が望むのはデータをフィルタリングすることです。 たとえば、ユーザーがcombobox1の値を選択して結果が表示されますが、combobox
2の値を選択すると、combobox1
のルールの対応する値のみが表示されます。 それはフィルタを作成するのと同じですが、コンボボックス間のやりとりの仕方はわかりません。私が持っている コードは次のとおりです。c#コンボボックスを使用してSQLデータをフィルタリングする
private void desempenho_SelectedIndexChanged(object sender, EventArgs e)
{
SqlDataAdapter sda = new SqlDataAdapter(@"select [desc],[enchimento],[compo] from vidros where desempenho = @emp", con);
sda.SelectCommand.Parameters.Add("@emp", SqlDbType.NVarChar).Value = desempenho.Text;
DataTable DTT = new DataTable();
sda.Fill(DTT);
listView1.Items.Clear();
for (int i = 0; i < DTT.Rows.Count; i++)
{
DataRow dr = DTT.Rows[i];
ListViewItem listitem = new ListViewItem(dr["desc"].ToString());
listitem.SubItems.Add(dr["enchimento"].ToString());
listitem.SubItems.Add(dr["compo"].ToString());
listView1.Items.Add(listitem);
}
}
private void valu_SelectedIndexChanged(object sender, EventArgs e)
{
SqlDataAdapter SDA2 = new SqlDataAdapter(@"select [desc],[enchimento],[compo] from vidros where valu = @emp2", con);
SDA2.SelectCommand.Parameters.Add("@emp2", SqlDbType.NVarChar).Value = valu.Text;
DataTable DTT2 = new DataTable();
SDA2.Fill(DTT2);
listView1.Items.Clear();
for (int i = 0; i < DTT2.Rows.Count; i++)
{
DataRow dr = DTT2.Rows[i];
ListViewItem listitem = new ListViewItem(dr["desc"].ToString());
listitem.SubItems.Add(dr["enchimento"].ToString());
listitem.SubItems.Add(dr["compo"].ToString());
listView1.Items.Add(listitem);
}
これはのみコンボボックスの2のためですが、私が取得するときに、残りの作業この1つはシンプルになります。
ありがとうございます。
ではなく、各イベントでのSelectedIndexChangedコードを繰り返すことができ、あなたが持っている必要があります各コンボから呼び出す1つのイベントハンドラ。すべてのコンボの値を調べ、そのデータから結果セットを構築します。 – stuartd