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

Student Information Classでは、2つのコンストラクターが設定され、作成されました。1つはデフォルトのコンストラクターで、2つ目は値を渡します。

リストボックスに表示しています:

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が、より良い解決策は、DataTemplatefor を記述することです。(やり方知ってる?)

余談ですが、UI スレッドでデータベースにアクセスすることはあまり良い考えではありません。これにより、クエリの実行中に UI がブロックされます。

于 2012-10-12T15:04:44.607 に答える