2009-10-13 4 views
0

DevExpress 2.9.5의 XtraGrid를 사용하여 동적 행 집합을 표시합니다. 블로터는 다른 응용 프로그램에 통합되어 있기 때문에 UserControl 클래스를 기반으로해야하며 사용자 정의 인터페이스 몇 가지를 구현해야합니다. XtraGrid가 제대로 새로 추가 된 행을 표시하지 않습니다.

public partial class BlotterForm : UserControl, ISMMdiEmbeddable, ISMAssociatedMFCWindow 
{ 
    private BindingList<BlotterTrade> fDeals; 
.... 
} 

데이터 BindedList를 사용하여 제어되기 때문에 바인더 제본

는 변경이 자동 형태에 반영되어야한다. 그리고 다음과 같이 fDeals에 새 줄을 추가하려고하면 :

public void AddDeal() 
{ 
    fDeals.Add(new BlotterTrade(1,2,3)); 
} 

... 줄을 볼 수는 있지만 내용은 쓰레기입니다.

작은 테스트 응용 프로그램에서 동일한 작업을 시도했습니다. 테스트 애플리케이션의 블로터가 DevExpress.XtraEditors.XtraForm을 기반으로한다는 점만 다르다. 나에게 그것은 오리지널 블로터의 형태가 어떤 방법을 과부하시키지 않거나 어떤 사건을 놓치지 않는 것처럼 보입니다. 그러나 나는 정확히 무엇이 빠졌는지를 알 수 없다.

누군가 내가 뭘 잘못했는지하지 않겠습니까?

감사합니다.

+1

http://www.devexpress.com/Support/Center/Default.aspx로 이동하여 질문하십시오. 그들의 공식지지는 흔들린다. – Przemaas

답변

0

몇 가지 :

  1. 는 바인딩은 항상 DevExpress의와 너무 잘 작동하지 않으며, 대신 XPCollection를 사용하도록 제안합니다.

  2. xtragrid에서 열을 설정하는 방법에 대한 추가 정보가 있습니까? 열에 잘못된 필드 이름을 사용하면 찾고있는 것을 표시하지 않습니다.

  3. 사용중인 매개 변수 (1, 2, 3)가 다른 객체에 fkeys로 저장된 ID 인 경우 (xpo를 사용 중인지 확실하지 않은 경우) 올바르게 표시되지 않습니다 셀의 값 대신에 '+'일 가능성이 높습니다).

  4. [기타] blottertrade는 그리드와의 상호 작용을 향상시키기 위해 INotifyPropertyChanged를 구현해야합니다.

0

모두에게 답변과 의견을 보내 주셔서 감사합니다. 나는 문제를 해결했다고 생각한다. 그것은 실제로 내 응용 프로그램에서 네이티브 C++과 C# 레이어 간의 상호 작용과 관련이 있습니다. XtraGrid에 표시 될 것으로 예상되는 객체는 C++ 레이어에서 만들어졌으며 그리드는 객체 생성/해체와 비동기 적으로 표시 되었기 때문에 그리드가 표시 될 준비가 된 순간 객체 자체가 존재하지 않았습니다. 그러므로 쓰레기. 그리드 자체가 충돌을 일으키거나 예외를 발생시키지 않는 것이 좋습니다.

관련 문제