0

4 つの主キー フィールドを持つテーブルがあります。C# を使用して作成した WinForm アプリケーションのドロップダウン リストにそれを読み込みます。

ドロップダウン リストの TextChanged イベントで、特定の TextBox があり、ドロップダウン リストで選択した特定のフィールドのテーブルが受け取った情報を入力したいと考えています。

私が言うように、テーブルには4つのフィールドがあります。これら 4 つのフィールドすべてをデータ セットから値メンバーに入れることはできますか、それとも不可能か教えてください。

ありがとうございました。

Datatable dt=dba.getName(); cmb_name.ValueMember="id"; cmb_name.DisplayMember="name"; cmb_name.DataSource=dt;

これは通常の形式です..しかし、私はより多くのキーフィールドを持っています..だから私はより多くのキーフィールドを追加する必要があります..

4

4 に答える 4

3

DataSourceプロパティを使用して、ソース データを ComboBox (エンティティのリストや DataTable など) にバインドし、ComboBox のDisplayMemberプロパティを表示するフィールドの (文字列) 名に設定できます。

ユーザーが項目を選択した後SelectedItem、元の行データ型 (Entity、DataRow など - 入力したものと同じ型のまま) にキャストし、4 つの複合キーを取得して、オリジナルアイテム。

このようにして、SelectedValue問題を完全に回避します。

編集

次のように設定します。

cmb_name.DisplayMember = "name";
cmb_name.DataSource = dt;

// Ignore ValueMember and Selected Value entirely

選択した項目を取得したい場合

var selectedRow = (cmb_name.SelectedItem as DataRowView );

これで、PK の 4 つの値を取得できます。selectedRow["field1"], selectedRow["field2"], selectedRow["field3"] etc

ただし、ユーザーに 4 つの列を表示したい場合 (つまり、テーブル キーとは関係ありません)、こちらを参照してください

于 2012-03-22T15:11:29.123 に答える
0

次のクラスを使用して、ここでのアプローチに従うことができます。

public class ComboBoxItem
{
   public string Text { get; set; }
   public object[] PrimaryKey { get; set; }
}

private void Test()
{
    ComboboxItem item = new ComboboxItem();
    item.Text = "Item text1";
    item.PrimaryKey = new object[] { primaryKey1, primaryKey2, primaryKey3, primaryKey4};

    comboBox1.Items.Add(item);

    comboBox1.SelectedIndex = 0;

    MessageBox.Show((comboBox1.SelectedItem as ComboboxItem).Value.ToString());
}
于 2012-03-22T15:10:31.140 に答える
0

ComboBoxからにデータを取得したい場合は、次のListようなものを使用できます

List<string> ListOfComboData = new List<string>();
ListOfComboData = yourComboBox.Items.OfType<string>().ToList<string>();

質問の構造が非常に貧弱なので、これがあなたの言っていることなのかどうか、私にはよくわかりません。これがお役に立てば幸いです...

編集:選択したテキストをTextBox使用するため

yourTextBox.Text = youComboBox.Text;

あなたのSelectedIndexChangedイベントでComboBox

于 2012-03-22T15:04:28.663 に答える