2017-12-05 4 views
0

나는 두 개의 열이 설계된 DataGridView이 있습니다. DataPropertyNameNameValue입니다. someObjectCollection (IS 난 단지 NameValue 속성 DataSource에 사용하려는DataGridView - 익명 객체에 대해 빈 데이터 소스 강제 설정

public class SomeObject 
{ 
    public string Name { get; set; } 
    public int Value { get; set; } 
    public int SomeOtherProp1 { get; set; } 
    public int SomeOtherProp2 { get; set; } 
} 

, 그래서 나는 그 두 가지 속성을 가진 익명의 객체를 생성 :이 DGV에 대한

DataSource처럼 보이는 SomeObject 클래스의 모음에서 온다 SomeObject objects 컬렉션) :

dgv.DataSource = someObjectCollection.Select(o => new { o.Name, o.Value }).ToArray(); 

그리고 괜찮습니다. 지금 달성하려면 수동으로 빈 콜렉션을 dgv.DataSource에 할당하여 제거하십시오.

DataGridView 컨트롤이 폼에서 사라지기 때문에 null을 할당 할 수 없습니다. DataSource에서 사용 된 두 개의 속성 만 사용하여 추가 viev 모델 클래스를 만들 수도 있습니다.

다른 방법이 있습니까?

+0

다른 모델을 데이터 소스로 사용하고 그 모델을 선택 항목으로 채우라고 제안하려고했습니다. 그 때 나는 당신의 마지막 문장을 주목했다. ID는 아마도 당신의 낙담하는'dgv'를 고치고'데이터 소스'를 null로 만들거나 공백'객체'로 설정 한 다음 행을 지우라고 제안 할 것입니다. – thanatorr

+0

그리드가 사라져서는 안됩니다. 최소한의 예가 있습니까? – Crowcoder

답변

1

마지막 유효한 결과로 빈 결과를 설정할 수 있습니다. 객체가 null 인 경우.

+0

좋아요, 이렇게 했어요 :'dgv.DataSource = Enumerable.Empty () .Select (o => new {o.Name, o.Value}). ToArray();' – pitersmx