안녕하세요.
혹시 데이터를 다시 읽어오는 부분에
다음과 같이 명시적으로 DataSource 속성을 null로 처리해보시겠어요?
https://github.com/VisualAcademy/TodoApp/commit/62d207813449ffa2ab34b22b1f89c1f6b5d90acd
private void DisplayData()
{
this.dataGridView1.DataSource = null; // 초간단 Refresh
this.dataGridView1.DataSource = _repository.GetAll();
}
특별히 문제는 되지 않을텐데,
일단, 제 환경에서는 저장 후 바로 다시 로드하는 부분에 큰 문제가 없었습니다.
Web Forms 환경이라면,
반드시 DataGrid 컨트롤에 DataBind() 메서드를 호출해줘야하지만,
Windows Forms 환경에서는 위 예시 코드처럼 null로 처리 후 다시 읽어오는 것도 하나의 방법이
될 수 있습니다.
또 다른 방법은 DisplayData() 메서드에서
직접 리포지토리 클래스의 인스턴스를 생성 후 직접 읽어와도 됩니다.
그럼, 다시 한 번 살펴보세요.
감사합니다.
On 2022-06-03 오후 12:14:00, '성우' wrote:
안녕하세요.
C# 교과서와 ASP NET & Core 책을 구매해서 공부하고 있습니다!
또한 항상 유튜브 강의 잘 보면서 감사함을 느끼고 있습니다.
C# 교과서 마스터하기 59강 XML, JSON 파트에서 윈폼 데이터 바인딩 질문드립니다.
버튼 클릭 후에 JSON 파일에는 TextBox에 입력된 정보가 잘 저장되는 것을 확인했는데, 윈폼 화면에 있는 DataGridView가 갱신되지 않아서 질문드립니다.
* 처음 Load 될 때는 정상적으로 갱신되어 출력됩니다.
버튼 클릭 이후 JSON파일이 잘 업데이트 되는 것을 확인했고, 추가적으로 버튼 이벤트 이후 데이터 필드인 _repository의 마지막 인덱스의 데이터를 가지고 오는 메서드를 생성하여 호출했지만, 정상적으로 입력된 값이 출력되는 것을 확인했습니다.
또 Break Pointer를 걸어서, 데이터 바인딩 하기 전에 _repository 필드에 입력된 데이터가 들어가 있는 것도 확인했습니다.
괜찮으시다면 어떤 것이 문제인지 알려주시면 정말 감사드리겠습니다.
혹시나 해서 github 주소 첨부드립니다.
https://github.com/srang03/TodoAppinCSharp/blob/main/TodoApp/Todoapp.Forms/Form1.cs
감사합니다.