2014-02-25 2 views
0

DataGridView가 포함 된 Windows Forms 응용 프로그램이 있습니다. DataGridView는 MyClass의 목록 인 DataSource에서 채워집니다. MyClass의 속성 세트와 같은 생성자가 포함DataGridView 셀 변경 사항 편집 및 커밋 (개체 목록에 바인딩)

public class MyClass 
{  
    public PropertyA{get;set}; 
    public ProppertyB{get;set;} 
    public ProppertyC{get;Set} 
} 

다음 주 형태를 나는이 목록 myCollection와 "myCollection"그래서 등으로 DataGridView를 채 웁니다 버튼을 반환하는 방법

private void btlLoadDataInDataGrid_Click(object sender, EventArgs e) 
{     
    var headers = GetAllHeaders();//GetAllheaders returns a List<MyClass> 
    dataGridView1.DataSource = headers; 
} 

원본 MyClass의 열이있는 DataGridView를 얻습니다. 이제 DataGridView에서 데이터를 편집하고이 변경 내용을 MyClass 속성의 실제 목록에 적용하려고합니다. 누군가 이것을 할 수있는 최선의 방법이 될 조언을 주시기 바랍니다 수 있습니까?

답변

2

DataSource이 개체 목록으로 설정되고 셀 값을 변경하는 표를 편집하면 행의 기본 데이터가 자동으로 업데이트됩니다. 귀하의 경우 기본 행 데이터는 MyClass입니다.

언제든지 DataGridView.DataBoundItem 속성을 사용하여 업데이트 된 행 데이터를 가져올 수 있습니다.

샘플 코드 : 그리드가 데이터베이스에서 채워 때

foreach(DataGridViewRow item in dataGridView1.Rows) 
{ 
    MyClass rowData = item.DataBoundItem as MyClass; 
    if(rowData != null) 
    { 
     // Do your stuff 
    } 
} 

데이터는 논리를 커밋이 다릅니다. 변경된 데이터를 데이터베이스에 적용하는 코드를 작성해야합니다.

+0

이것은 정확히 내가 필요한 것입니다. 정말 감사합니다. 나는 캐스트를 사용하여 MyClass 콜렉션을 리턴했다.'var selected = from row from dataGridView1.SelectedRows.OfType () select (MyClass) row.DataBoundItem;' – Jetnor

+0

@Jetnor - 도움이된다. 대답을 받아들이고 upvote 것을 잊지 마세요. – Junaith

관련 문제