C#在Microsoft Access数据库的表单加载事件期间填充列表框

时间:2013-08-20 23:54:28

标签: c# database listbox

拜托,我需要一些帮助。我有一个C#表单,它有一个列表框,我想在表单加载事件期间填充。当我点击某个项目时,我希望它在表单上的几个文本框中显示相关信息,但下面的代码不会加载列表框。它没有错误,但也没有加载任何值。我在这个网站上发现了一个类似于我的请求的帖子,但它没有帮助。

以下是表单加载部分中的代码:

        string str = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\\data.mdb;JetOLEDB:DatabasePassword=SomethingGoesHere";
        OleDbConnection con = new OleDbConnection(str);
        var ds = new DataSet();
        var adapter = new OleDbDataAdapter("SELECT Last_Name FROM Membership_Log", con);
        con.Open();
        adapter.Fill(ds);
        DataTable dt;
        dt = ds.Tables[0];

        View_Membership_Log_Listview.DataSource = dt;
        View_Membership_Log_Listview.DisplayMember = "Last_Name";
        var value = ds.Tables[0].Rows[0]["Last_Name"].ToString();
        var value2 = ds.Tables[0].Rows[0]["First_Name"].ToString();
        last_NameTextBox.Text = value;
        first_NameTextBox.Text = value2;
        con.Close();

1 个答案:

答案 0 :(得分:0)

变化:

View_Membership_Log_Listview.DataSource = dt;
        View_Membership_Log_Listview.DisplayMember = "Last_Name";
        var value = ds.Tables[0].Rows[0]["Last_Name"].ToString();

要:

    Dictionary<string,string> d_Names = new Dictionary<string,string>();

foreach(DataRow row in ds.Tables[0].Rows)
{
d_Names.Add(row["Last_Name"].ToString(),row["Last_Name"].ToString()); //Last name is the    key, First name could be used as the value or visa versa if needed.
}

View_Membership_Log_Listview.DataSource = d_Names;
        View_Membership_Log_Listview.DisplayMember = "Key";
        View_Membership_Log_Listview.ValueMember = "Key";

希望这会有所帮助,我没有VS在我面前开放所以请原谅任何错误。