2010-01-19 3 views
0

프로그래밍 방식으로 DataGridView 셀 값을 변경하려고하지만 값이 바인딩 된 데이터 소스로 푸시되지 않습니다. 선택한 행에 속한 셀에만 밀어 넣습니다. 행 값을 데이터 소스로 푸시하도록 DataGridView에 요청하려면 어떻게해야합니까?뷰 값 (WinForms DataGridView)에서 데이터 소스 업데이트

편집 :

이 코드는 트릭을 할 것 같다,하지만 더 좋은 해결책이 될 수 있습니다?

grid.CurrentCell = cell; 
cell.Value = "some value"; 
grid.EndEdit(0); 
+0

"grid.BeginEdit (true);를 호출하면 작동합니다." 처음에는 – EZDsIt

답변

0

DataGridView 셀을 업데이트하지 말고 데이터 소스를 직접 업데이트해야합니다. INotifyPropertyChanged을 구현하는 경우 DataGridView에 자동으로 변경 내용이 반영됩니다.

+0

흠 ... 왜 내가하지 말아야할까요? DataGridView에 일부 값을 붙여 넣고 데이터 소스로 전달하려고합니다. – alex2k8

+0

왜? 여러 가지 이유 ... 예를 들어, UI와 비즈니스 관련 문제가 서로 연결됩니다. 언젠가 WPF 나 ASP.NET 등으로 앱을 포팅하고 싶다면 비즈니스 관련 코드가 UI 관련 코드와 섞여 있다면 훨씬 더 많은 작업이 필요합니다. 또한 DataGridView는 코드가 아닌 사용자가 수정할 수 있도록 설계되었습니다 (따라서 사용자의 문제). 그리고 어쨌든 일반적으로 UI 자체보다는 데이터 소스를 수정하는 것이 더 간단합니다 ... –

+0

사용자가 I가 아닌 다른 시나리오를 가정하는 것처럼 보입니다. 사용자가 일부 행에 대해 간단한 복사/붙여 넣기를 수행하려고한다고 생각하십시오. DataGridView에는 이에 대한 지원이 내장되어 있지 않으므로이를 수행 할 코드가 있습니다. 클립 보드에서 데이터를 가져 와서 눈금으로 밀어 넣습니다. 동의합니다. 두 가지 옵션이 있습니다. 데이터를 데이터 소스에 넣거나보기에 넣습니다. 문자열 값을 파싱하고 데이터 객체의 올바른 필드에 수동으로 푸시하는 것은 신경 쓰지 않습니다. 따라서 열 순서가 변경되면 코드를 업데이트 할 필요가 없습니다. 내 경우에는 데이터를 셀에 넣는 것이 더 간단합니다. 그래서 당신 아이디어를 주셔서 감사합니다,하지만 내가 뭘 찾고있는 것 같아요. – alex2k8

관련 문제