0

リストボックスがあります。データベースから人を検索すると、結果がリストボックスに表示されます。次に、リストボックスから人の名前をクリックするたびに、人の詳細がテキストボックスに表示されるようにします。私は自分のコードを持っていますが、問題は、最初にクリックした人の詳細だけがテキストボックスに表示されることです。

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

    }
4

5 に答える 5

0

小切手

if (reader[0].ToString() == listBox1.Tag.ToString())
it will not work....

リストボックスの選択されたインデックスを取得する必要があります

于 2013-03-01T07:17:23.473 に答える
0

に変更しますlistBox1.selectedItem.ToString()

于 2013-03-01T07:18:13.780 に答える
0

コードを使用する場合は、更新して[選択済み]リストボックスの項目キーlistBox1.Tagに入れる必要があります。Tagまたは、次のようなものを使用する必要がありますreader[0].ToString() ==listBox1.SelectedValue

于 2013-03-01T07:18:20.090 に答える
0

ListBox.Tagの代わりにチェックしていListBox.SelectedItemます。

Tagプロパティを使用して、アイテムに関連付ける任意のオブジェクトを格納できます。任意のアイテムを格納できますが、Tagプロパティは通常、一意の識別子やデータベース内のアイテムのデータのインデックス位置など、アイテムに関する文字列情報を格納するために使用されます。

とにかくイベントに参加SelectedItemしているので、簡単に確認できます。listBox1_SelectedIndexChanged

それ以外の

if (reader[0].ToString() == listBox1.Tag.ToString())

試す

if (reader[0].ToString() == listBox1.SelectedItem.ToString())
于 2013-03-01T07:23:21.067 に答える
-1

Select Queryには、WHERE句などのパラメータが必要です。これにより、プログラムは、データベース内のどの特定のデータをロードするかを知ることができます。

リストボックスの表示を教えてください。

これは単なる別のオプションです。

于 2013-03-01T07:22:46.133 に答える