1

customerID (ID) と姓名を表示するデータベースに対してクエリを実行したいと考えています。

コンボボックスに姓と名を表示したいのですが、選択すると値がcustomerIDになります。customerID は、Windows フォームに自動入力する別のクエリの対象として実行されます。

これは私がこれまでに持っているものです-私はそのcombobox.Items.Add部分が間違っていることを知っています-それが私の問題を抱えているところです.

conn = new SqlConnection();
conn.ConnectionString = "my connection string";

SqlDataAdapter da = new SqlDataAdapter("Select * from Customer", conn);
DataTable dt = new DataTable();

da.Fill(dt);

for (int i = 0; i < dt.Rows.Count; i++) 
{
    comboSelectCust.Items.Add(dt.Rows[i]["FName" + "Surname"]);
}
4

5 に答える 5

2

これにはDataTableを使用するので、DisplayMemberとValueMemberでバインドしてみませんか?

于 2012-06-11T09:39:10.380 に答える
0
for (int i = 0; i < dt.Rows.Count; i++) 
{
   comboSelectCust.Items.Add(new KeyValuePair<string, int>(dt.Rows[i]["FName"].ToString() +  dt.Rows[i]["Surname"].ToString(), Convert.ToInt32(dt.Rows[i]["customerId"].ToString()));
}
于 2012-06-11T09:38:55.880 に答える
0

ComboBoxItemのTagプロパティを使用して値を設定できます ( Contentは表示テキストを設定するプロパティです)。

comboSelectCust.Items.Add(new ComboBoxItem() { 
    Content = dt.Rows[i]["FName"] + dt.Rows[i]["Surname"], 
    Tag = dt.Rows[i]["customerId"]
});
于 2012-06-11T09:36:18.667 に答える
0

DataSourceDisplayMemberおよびを使用する擬似コードを次に示しますValueMember

SqlDataAdapter da = new SqlDataAdapter("Select FName || Surename as FullName, customerID from Customer", conn);
DataTable dt = new DataTable();

da.Fill(dt);

comboSelectCust.DataSource = dt;
comboSelectCust.DisplayMember = "FullName";
comboSelectCust.ValueMember = "customerID";
于 2012-06-11T09:42:27.683 に答える
0

これを試してみてください

conn = new SqlConnection();
conn.ConnectionString = "my connection string";

SqlDataAdapter da = new SqlDataAdapter("Select (FName+' '+Surname) As Name,customerID from Customer", conn);
DataTable dt = new DataTable();

da.Fill(dt);

comboSelectCust.DisplayMember = "Name";
comboSelectCust.ValueMember = "customerID";
comboSelectCust.DataSource = dt;

クエリを変更し、表示メンバーと値メンバーのプロパティを追加し、データ テーブルをデータ ソースとして割り当てます。

于 2012-06-11T09:55:11.173 に答える