2012-01-12 2 views
0

기본적으로 데이터베이스 테이블에 첨부 된 DataGrid 인 애플리케이션을 작성하고 있습니다. 내가 SQL에 LINQ를 사용하여 간단한 통해 테이블에 바인딩 오전 :DataGrid에 바인딩, 클라이언트 측에서 트리거하는 데이터베이스 변경

dGridd.ItemsSource = _dbcontext.TheTableObjects;

이 표는 성공적으로 테이블을 보여줍니다, 나는 외부 데이터베이스 값을 변경할 때 그러나 데이터 그리드가 업데이트되지 않습니다 (예 : MSSQL에서) . 나는 여기서 대부분의 지시를 따랐다 : Simple Demo of Binding to a Database in WPF using LINQ-SQL, ObservableCollection의 사용을 건너 뛰는 것을 제외하고는 (차이가 없어야한다.)?

데이터베이스 테이블의 내용이 외부 적으로 변경 될 때 바인딩 (그리고 따라서 DataGrid)을 업데이트하고 싶습니다. 본능적으로 나는 스스로에게 이렇게 말했다 : '이것은 어리 석다. 클라이언트 응용 프로그램이 일종의 폴링없이 데이터베이스 내용을 어떻게 알 수 있습니까?'...하지만 다시는 현명한 LINQ에서 SQL까지 실제로는 알 수 없습니다 ...

+0

자신의 직감이 정확로 전파됩니다 델타 인스턴스를 제거, 추가하는 ObservableCollection에를 사용하여 추가 할 ObservableCollection에 사용합니다. –

+0

합니까 응용 프로그램은 값을 표시하는 것 외에 다른 작업을 수행합니까? 다른 버튼/기능이 필요할 경우 배경에서 폴링을 수행해야합니다. 읽기 전용 인 경우 ListView/GridView를 사용하여 DataGrid보다 가볍게 작업 할 수 있습니다 CLR 트리거를 사용하여 http://msdn.microsoft.com/en-us/library/ms131093.aspx 알림을받을 수 있습니다. 답변을 게시하지 않았습니다. – Paparazzi

+0

감사합니다. 대답, 죄송합니다 질문에 다른 질문을 물어 :하지만 최소한의 UI interfearin 무엇입니까 DB 폴링 및 그리드 채우기 방법? 현재 DispatcherTimer에서'ObservableQueue'를 단순히 업데이트하고 있습니다.이 때마다 UI가 약간 지연되는 것을 느낍니다. 애플리케이션 응답 성이 향상되는 한 더 나은 방법이 있습니까? – user989056

답변

0

jberger가 가장 좋은 답변을 제공했습니다.

본능이 맞았습니다. 당신은 투표해야합니다. 자동으로 데이터 그리드로 전파됩니다 델타 인스턴스를 제거합니다. 당신은 폴링해야합니다. 자동으로 데이터 그리드 "

관련 문제