1

지금은 개체 모델의 개체 컨텍스트를 기반으로 새 개체 데이터 원본을 만들었습니다. 그런 다음이 BindingSource에 설정된 BindingSource 및 DataGridView를 만들었습니다.DataGridView에 대한 조인을 사용하여 쿼리를 바인딩하는 방법?

TraceLine 테이블에서 데이터에 바인딩 된 열을 추가 할 수 있습니다. DataSource를 설정하면 해당 열의 값이 표시됩니다. 그러나 조인 된 테이블에서 데이터를 가져올 수 없습니다. DataGridView를 조인이있는 쿼리에 바인딩하려면 어떻게해야합니까?

using (var entities = new MyEntities()) 
{ 
    var lines = from t in entities.Lines 
       join m in entities.Methods on t.MethodHash equals m.MethodHash 
       where t.UserSessionProcessId == m_SessionId 
       select new 
       { 
        m.Name, // doesn't get displayed in DataGridView, but I want it to 
        t.Sequence, 
        t.InclusiveDuration, 
        t.ExclusiveDuration 
       }; 

    dgvBindingSource.DataSource = lines; 
} 

답변

0

한 가지 문제는 DataGridView를가 자사의 데이터 소스의 유형 중 하나에 디자인 타임에 설정했을 수 있지만 런타임에 당신이 여분의 멤버가 익명의 유형으로 설정하는 것입니다. 데이터 소스가 변경된 후 DataGridView에서 열을 다시 생성하지 않습니다.

데이터 원본을 null로 설정하고 열 컬렉션을 지우고 데이터 원본을 설정해야 할 수 있습니다. 실제로 더 나은 아이디어는 자동 생성 대신 명시 적으로 열을 만드는 것입니다.

+0

데이터 바인딩을 사용하지 말 것을 제안하는 경우 수동으로 열을 추가 한 다음 컬렉션을 반복하고 수동으로 datagridview를 채우십시오. 나는 이것이 선택 사항이라는 것을 알고 있지만 최후의 수단이었다. – esac

+0

아니요 ... 데이터 바인딩이 좋습니다. 그러나 DataGridView는 대부분의 그리드와 마찬가지로 데이터 소스를 반영하여 열을 자동으로 작성합니다. 그러나 익명 형식을 구성하는 형식 중 하나에 대해 디자인 타임 바인딩이있는 경우 열을 수동으로 추가해야 할 수 있습니다. 셀의 값은 예상대로 데이터를 바인딩해야합니다. – Josh