0

CaseNotes という名前の winform データ入力および検索プログラムがあります。これには、入力するフォームがあります。フォームには、tblCNMaintItem にデータ バインドされている複数のドロップダウン、チェックボックス コントロールがあります。そのテーブルの構造は -->

アイテム ID | カテゴリ ID | 商品説明 | オーダーID | アクティブです

そのカテゴリ ID を提供する別のカテゴリ テーブルがあります。CategoryID は、Case Notes フォームの単一のコントロールにマップされます。

私の質問は 2 つあります。

  1. 各アイテムの値を取得するにはどうすればよいですか? のように、CategoryID で itemDescription を取得してコントロールを設定しますが、SaveNewCaseNote() では代わりに対応する ItemID を取得する必要があります。どうすればこれを達成できますか? 各カテゴリ (コントロール) ごとに辞書を作成する必要がありますか? ItemID/ItemDescription コンボを列挙する必要がありますか?

  2. 編集答えを見つけたので、#2を忘れてください。

ありがとう!

編集

さて、何らかの理由でこれを明確に述べておらず、混乱を招いています. 私のDBは3つのテーブルで構成されています。 tblCaseNotestblCNMaintCategorytblCNMaintItem。CaseNotes には、行ごとに完全な「Case Note」が含まれています。Maint テーブルは、CaseNote に記入する際の多肢選択式の回答用です。例: 「連絡先」を選択する必要があります。オプション「オフィス」または「メンバーの家」。tblCNMaintCategoryには、次のようなエントリがあります-- >

CategoryID = 3、CatgoryName = 連絡先の場所、IsActive = True

tblCNMaintItemには、次のような 2 つのエントリがあります -->

ItemID=51、CategoryID=2、ItemDescription=オフィス、OrderID=0、IsActive=True ItemID=52、CategoryID=2、ItemDescription=メンバーの家、OrderID=0、IsActive=True

tblCaseNoteには、次のようなエントリがあります --> CaseNoteID=3243、PersonID=454676、AssocContactLocations= 51、そして同じパターンに従うさらに多くの列

質問 1 は、ItemDescription ではなく AssocContactLocation に ItemID を格納したいということです。私は考えています

Dictionary <strng, int> cLocateItems(itemDescription,itemID)多分...

これは役に立ちますか?

時間と労力をありがとう!

4

3 に答える 3

1

編集後、「データを保存するときにテキストを表示しながら数値 ID を使用するにはどうすればよいですか?」という意味だと思います。

それがあなたの質問なら、はい、あなたの辞書のアイデアはうまくいくでしょう。

CRUD 作業を行ってから長い時間が経ちましたが、ID をテキストと共にドロップダウン ボックスに保存できたことを思い出します。次に、更新を行うときに、テキストの代わりに ID を使用します。このオプションは、辞書のアイデアよりも簡単かもしれません。

私がまだあなたの質問を誤解している場合は、他の誰かが助けなければならないと思います.

于 2009-04-24T13:53:01.557 に答える
1

前半は分からんけど後半は…

ベスト プラクティスは、1 つの列に複数の値を格納しないことです。

代わりに、すべての値を含む 2 番目のテーブルへの 1 対多の参照を作成します。

于 2009-04-24T13:57:48.597 に答える
0

CNMaintItem の基になるデータ ソースは何ですか? 既に ADO.NET DataTable にある場合、解決策は簡単です。リスト コントロールにバインドするときは、DisplayMember プロパティを「ItemDescription」に、DisplayValue を「ItemID」に設定します。次に例を示します。

//dtItem is the DataTable
ddlItem.DataSource = dtItem;
ddlItem.DisplayMember = "ItemDescription";
ddlItem.ValueMember = "ItemID";

厳密に型指定された DataTable の場合:

ddlItem.DataSource = dtItem;
ddlItem.DisplayMember = dtItem.ItemDescriptionColumn.ColumnName;
ddlItem.ValueMember = dtItem.ItemIDColumn.ColumnName;

上記は、任意の種類のオブジェクト コレクションでもかまいません。ディクショナリがある場合は、ディクショナリ オブジェクトを BindingSource オブジェクトに割り当てる必要があります。次に、BindingSource オブジェクトをリスト コントロールの DataSource プロパティに割り当てます。

BindingSource bs = new BindingSource();
bs.DataSource = dictItem;
ddlItem.DataSource = bs;
ddlItem.DisplayMember = "Value";
ddlItem.ValueMember = "Key";

いずれの場合も、保存時に SelectedValue を介して ItemID を取得できます。

int IdToSave = Convert.ToInt32(ddlItem.SelectedValue);
于 2009-04-25T02:01:39.153 に答える