我正在使用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