ユーザーが最初に選択したときに2番目のコンボボックスのアイテムを再投入するだけで済みます。
ユーザーが選択するたびにデータベースを再クエリーする必要はなく、その代わりにtoolidにキーされたすべての有効なファセットをメモリー内に保持する必要があります。 Daveのコメントに基づいて
EDITさらにいくつかの詳細:
あなたは既にデータベースを照会するためにいくつかのコードを設定していると仮定すると、あなたはに戻って、関連するデータをあなたに与えるクエリ(またはクエリ)を実行したいですキャッシュを保持し、データベースに接続した後にアプリの初期化の一環としてこれを行います。ツールとファセットデータを保持する2つの辞書を作成できます。たとえば、次のように
Dictionary<int, string> _tools = new Dictionary<int, string>();
Dictionary<int, string> _facets = new Dictionary<int, string>();
、その後、基本的にtool_facet内のデータを保持している第3の構造:
Dictionary<int, List<int>> _tool_facets = new Dictionary<int, List<int>>();
これらは基本的にはあなたが非常に迅速に投入するために列挙することができ、テーブルのインメモリコピーを与えますコンボボックス。あなたはこのような何かを行います、IDと説明を保持している何かをコンボボックスを移入することをお勧めします:
class ComboBoxIntItem
{
private readonly int _id;
private readonly string _name;
public ComboBoxIntItem(int id, string name)
{
_id = id;
_name = name;
}
public override string ToString()
{
return _name;
}
public int GetId()
{
return _id;
}
}
私はあなたがユーザーというツールと、ファセットのIDを知っておく必要があることを、ここで仮定しています選択しました。私の他の答えのすべてが不必要な多くの作業のように聞こえるならば、あなたもそのあなたデータバインディング機能を使用して見て可能性があり
Dictionary<string, List<string>> _tool_facets = new Dictionary<string, List<string>>();
あなたの最初の点に答えて:はい。第二に対応して、どうすればこの構造を作ることができますか? – Meir
私はいくつかの詳細を追加しました、うまくいけば正しいレベルで投げた... –