>source

내 데이터 그리드에 문제가 있습니다. 내 데이터 그리드는 책 테이블의 모든 정보를 보여주지만 이 사진과 같이 열의 저자 및 일반 테이블의 포함 정보를 볼 수 없습니다. 여기에 이미지 설명 입력

이것은 내 code입니다:

var DbBooks= db.Books
                    .Include(b=> b.Author)
                    .Include(b=> b.Genre)
                    .ToList();
                datagrindBooks.DataSource= DbBooks;

DataGridView는 DataGrid와 다릅니다.

Reza Aghaei2022-01-23 10:51:14

이는 해당 열에 Author 및 Genre 개체가 표시되기 때문입니다. 해당 개체의 문자열 표현입니다. 따라서 해당 클래스에서 ToString()을 재정의하고 예를 들어 작성자 전체 이름 또는 장르 이름을 반환할 수 있습니다. 다른 가능한 솔루션을 보려면 이 게시물이나 다른 게시물을 보고 DataGridView에서 탐색 속성을 표시하는 방법을 확인할 수 있습니다.

Reza Aghaei2022-01-23 10:51:14

매우 감사합니다

den is2022-01-22 16:54:15
  • 답변 # 1

    일부 NotMapped 속성을 Books 엔터티에 넣을 수 있습니다.

    public partial class Book{
      [NotMapped] //so EF ignores it
      public string AuthorName { get=> Author.Name; }
      ...
    }
    

    등; 데이터 자체를 저장하지 않고 하위 개체의 프록시만 사용하고 DataGridView가 데이터를 찾아 반환하는 값을 표시합니다. 두 가지 방법을 원하면 세트도 필요합니다.

    thx, 내 목록에 있는 일부 속성을 숨기고 싶은 문제가 하나 더 있습니다. Browsable(false) 속성을 사용합니다. 괜찮습니까 아니면 ef를 사용하는 내 code에서 미래에 해를 끼칠까요?

    den is2022-01-22 16:48:21

    열을 자동 생성한 후에 DataGridview에서 열을 제거하면 됩니다. tbh.. dgvWhatever.AutoGenerateCOlumns= true; dgvWhatever.DataSource= 책 목록; dgvWhatever.Columns.Remove("책 사본"); .. 그들은 데이터 소스가 설정될 때 생성됩니다. 그러나 browsable(false)이 DGV가 속성을 무시하도록 하기 위해 작동한다고 믿습니다.

    Caius Jard2022-01-22 18:22:28
  • 이전 정의되지 않은 메소드를 호출하지만 정의되어 있으며 index.php에서 작동합니까?
  • 다음 python : 팬더 DataFrame과 함께 for 루프 사용