2012-03-21 2 views
0

이 겉으로보기에는 분명한 질문에 대해 용서해주세요. 그러나 내 검색에서 대답을 밝히지 않았습니다.DataTable에 DataGridView를 바인딩하십시오.

DataTable에 바인딩 된 DataGridView가 있습니다. 모든 행이 모눈에 표시되지만 하나 이상의 DataGridView 열에서 값을 변경 한 후에 Grid의 DataSource로 표시된 테이블이 업데이트되지 않습니다. 표와 표 모두 기본 키를 포함합니다. 내가 여기서 무엇을 놓치고 있니? RowValidated 이벤트에서 뭔가를해야합니까?

dgvCriticalContacts.AutoGenerateColumns = False 
    Dim ccRs As DataTable = Common.OpenRecordset("SELECT * FROM PhoneList") 
    dgvCriticalContacts.DataSource = ccRs 
+0

ccRs 란 무엇입니까? 데이터베이스를 업데이트하는 코드는 어디에 있습니까? – Steve

+0

ccRS는 DataTable입니다. 셀이 변경되면 명시 적 SQL UPDATE 문을 발행해야합니까? DataGrid는 암시 적으로 업데이트를 수행하지 않는다고 생각합니다. –

답변

1

DataGridView가 자동에서 정보를 얻을 수있는 데이터베이스를 업데이트 할 수있는 기능을 가지고 있지 않습니다. DataTable을 사용하여 DataGridView 데이터 원본을 제공 할 수는 있지만 데이터베이스 자체를 다시 업데이트 할 수는 없습니다.

그러나, 닷넷 프레임 워크는 이러한 기능을 수행 할 수있는 TableAdapter (http://msdn.microsoft.com/en-us/library/bz9tthwx%28v=vs.90%29.aspx, 3.5 및 이전 버전) 또는 DataAdapter (http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter%28v=vs.90%29.aspx, 모든 버전)을 가지고있다.

개인적인 경험으로 볼 때이 어댑터는 단순한 데이터 구조라면 해결할 수없는 것보다 더 많은 문제를 발생시킵니다. 더 복잡한 것이 있다면 행에 대한 클래스를 만들고 DataGridView에 표시 할 수 있도록 BindingList (또는 이와 비슷한)을 만드는 것이 좋습니다. 자체적 인 변경 내용 추적 및 CRUD 문을 구현해야하지만, 그만한 가치가 있으며 결국에는 두통이 줄어들 것입니다.

관련 문제