我想通过列表从MS.Access中检索数据但是在运行应用程序时它会显示所有条目,但只是文件名,如Student.StudentInformation我不知道为什么然后当我选择第一个条目时我会告诉我textBox中的正确数据? 我的查询是:
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这样的列表 如何解决?
答案 0 :(得分:1)
这似乎是一个演示问题。您应该解释一下WPF(您正在使用WPF,对吧?)如何显示StudentInformation
。
作为一种简单的解决方法,您可以为ToString()
重载函数StudentInformation
,但更好的解决方案是为其编写DataTemplate
。 (你知道怎么做吗?)
除了注释:在UI线程中访问数据库不是一个好主意,这会在查询期间阻止您的UI。