0

我想通过列表从 MS.Access 检索数据,但是当运行应用程序时,它会显示所有条目,但只是像 Student.StudentInformation 这样的文件名我不知道为什么,然后当我选择第一个条目时,我会显示正确的数据文本框?我查询的是:

public ICollection<StudentInformation> GetStudents()
   {
        OleDbConnection con = new OleDbConnection(connectionString);
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = con;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT * FROM Students";

       ObservableCollection<StudentInformation> students = new ObservableCollection<Student>();
       try
       {
           con.Open();
           OleDbDataReader reader = cmd.ExecuteReader();
           while (reader.Read())
           {
               Student aStudent = new Student(Convert.ToInt32(reader["StudentID"]),
                                               reader["StudentName"].ToString(),
                                               reader["StudentEmail"].ToString());

               students.Add(aStudent);
           }
           reader.Close();
           return students;
       }
       finally
       {
           con.Close();
       }
   }

在学生信息类中,我确实设置了两个构造函数。一个是默认构造函数,第二个是传递值。

我在列表框中显示:

private ICollection<StudentInformation> students;
 private void BtnGetStudent_Click(object sender, RoutedEventArgs e)
    {
        students = StudentDb.GetStudents();
        Studentlst.ItemsSource = students;
    }

它显示像 Student.StudentInformation 这样的列表如何解决?

4

1 回答 1

1

这似乎是一个演示问题。您应该解释 WPF(您正在使用 WPF,对吗?)如何显示StudentInformation.

作为一个简单的解决方法,您可以重载ToString()for函数StudentInformation,但更好的解决方案是DataTemplate为它编写一个。(你知道怎么做吗?)

需要注意的是:在 UI 线程中访问数据库不是一个好主意,这会在查询期间阻塞您的 UI。

于 2012-10-12T15:04:44.607 回答