我正在使用C#,winforms。從組合框中獲取選定的值
有一個小問題。我儘可能地進行了調試,導致我相信我使用的代碼導致了問題。 好吧,我有一個組合框,充滿了來自查詢的數據。
有2列「名稱」和「鍵碼」。我只顯示名稱使用:
accCollection.DisplayMember = "name";
然後,我使用以下獲取與該名稱對應的鍵代碼值。
string acct = accCollection.SelectedValue.ToString();
我遇到的問題是鍵碼與名稱不符。我雖然這可能是我的查詢,所以我做的是在我填充組合框之前在數據網格視圖中顯示查詢結果。數據網格視圖顯示正確的結果,這導致我相信我使用了錯誤的代碼!
希望這是一個愚蠢的單線問題,如果你們想要更多的代碼讓我知道,我會編輯這篇文章。
UPDATE繼承人的代碼,我忘了提,你可以看到我已經分配的數據成員
accCollection.DataSource = myTable;
accCollection.DisplayMember = "name";
accCollection.ValueMember = "keycode";
UPDATE ::::好了一些更多的信息。選定的值應該是1557,即姓名帳號。但我得到1855,這是一個不同的帳號。就像我說的數據表是正確的....這就是爲什麼我sooooooo困惑!
更新::繼承人一些代碼,所以你可以看到我如何更新信息的組合框!
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 ::只是爲了顯示我得到的數據!
好的,所以在調試的一些幫助後,我使用了下面的代碼來獲得這些結果。
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 2011-12-15 10:42:37
已經賦值成員 – lemunk 2011-12-15 10:51:14