我有一个列表框。每当我从数据库中搜索某个人时,结果都会显示在列表框中。然后我想要的是每当我从列表框中点击该人的姓名时,人员详细信息将显示在文本框中。我有我的代码,但问题是只有我第一次点击的人的详细信息显示在文本框中。
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
connection.Open();
OleDbCommand select = new OleDbCommand();
select.Connection = connection;
select.CommandText = "Select * From Accounts";
OleDbDataReader reader = select.ExecuteReader();
while (reader.Read())
{
if (reader[0].ToString() == listBox1.Tag.ToString())
{
fnametb.Text = reader[1].ToString();
lnametb.Text = reader[2].ToString();
agetb.Text = reader[3].ToString();
addresstb.Text = reader[4].ToString();
coursetb.Text = reader[5].ToString();
}
}
connection.Close();
}
答案 0 :(得分:0)
检查
if (reader[0].ToString() == listBox1.Tag.ToString())
it will not work....
您需要获取列表框的选定索引
答案 1 :(得分:0)
将其更改为listBox1.selectedItem.ToString()
答案 2 :(得分:0)
如果您想使用代码,则需要刷新listBox1.Tag
并输入Tag
所选列表框项目键。或者您需要使用reader[0].ToString() ==listBox1.SelectedValue
答案 3 :(得分:0)
您正在检查ListBox.Tag
而不是ListBox.SelectedItem
。
Tag属性可用于存储要与项目关联的任何对象。虽然您可以存储任何项目,但Tag属性通常用于存储有关项目的字符串信息,例如唯一标识符或项目数据在数据库中的索引位置。
您可以查看SelectedItem
,因为您还在listBox1_SelectedIndexChanged
事件中。
而不是
if (reader[0].ToString() == listBox1.Tag.ToString())
试
if (reader[0].ToString() == listBox1.SelectedItem.ToString())
答案 4 :(得分:-1)
您的Select Query必须具有一些参数,例如WHERE子句,以便程序知道它将加载数据库中的哪些特定数据。
告诉我列表框中的显示是什么?
这只是另一种选择。