在文本框中显示详细信息

时间:2013-03-01 07:13:36

标签: c#

我有一个列表框。每当我从数据库中搜索某个人时,结果都会显示在列表框中。然后我想要的是每当我从列表框中点击该人的姓名时,人员详细信息将显示在文本框中。我有我的代码,但问题是只有我第一次点击的人的详细信息显示在文本框中。

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();

    }

5 个答案:

答案 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子句,以便程序知道它将加载数据库中的哪些特定数据。

告诉我列表框中的显示是什么?

这只是另一种选择。