私はC#、winformsを使用しています。comboboxから選択した値を取得
小さな問題がありました。私が使用しているコードが問題を引き起こしていると私が思うようにできるだけ多くデバッグしました。 これで、クエリのデータでいっぱいのコンボボックスができました。
「名前」と「キーコード」の2つの列があります。
accCollection.DisplayMember = "name";
次に、名前に対応するキーコード値を取得するために、次のコマンドを使用します。
string acct = accCollection.SelectedValue.ToString();
問題は、キーコードが名前と一致しないことです。私はこれが私のクエリかもしれませんが、私がしたことは、コンボボックスを塗りつぶす前に、データグリッドビューにクエリ結果を表示することでした。データグリッドビューに正しい結果が表示され、間違ったコードを使用していると思われます。
もう一つのコードが欲しいと思ったら、私はこの記事を編集します。あなたは私はすでにデータ部材
accCollection.DataSource = myTable;
accCollection.DisplayMember = "name";
accCollection.ValueMember = "keycode";
UPDATEが割り当てられている:::: [OK]を、いくつかの詳細情報を見ることができるよう
UPDATEはHERESにコード私は、言及を忘れてしまいました。選択された値は名前のアカウント番号である1557です。しかし、私は1855を取得します。これは別のアカウント番号です。私はdatatableが正しいと言ったように....これはなぜsoooooooooは混乱しているのです!
いくつかのコードが更新されているので、コンボボックスの情報をどのように更新するのか分かります!
SqlCommand accountFill = new SqlCommand("SELECT name, keycode FROM dbo.Customer", conn1);
SqlDataAdapter readacc = new SqlDataAdapter(accountFill);
DataTable dt = new DataTable();
readacc.Fill(dt);
dataGridView3.DataSource = dt;
conn1.Close();
accCollection.DataSource = dt;
accCollection.DisplayMember = "name";
accCollection.ValueMember = "keycode";
次に、他のクエリを呼び出すタスクに次のものを渡します。
private void button1_Click_1(object sender, EventArgs e)
{
checkBox1.Checked = true;
string acct = accCollection.SelectedValue.ToString();
Task t = new Task(() => GetsalesFigures(acct));
t.Start();
}
UPDATE ::ちょうど私が得るデータを表示する!
okこれで、デバッグの助けを借りて、次のコードを使用してこれらのレビューを取得しました。
var result = accCollection.SelectedValue;
if (result != null)
{
MessageBox.Show(result.ToString());
}
これは
を間違って1885年には=が、私はこれを行うとき。
DataRowView row = (DataRowView)accCollection.SelectedItem;
if (row != null)
{
MessageBox.Show(row[0] + " " + row[1]);
}
そのショー正しいデータ、 "メルクシャム" "1557"
これはなぜでしょうか?
したがって、 'accCollection.SelectedValue.ToString()'の結果は何ですか?あなたが取得するキーコードは何ですか? – Otiel
に既に値メンバが割り当てられています – lemunk