2011-11-10 2 views
1

내가 실버 4변경으로 그들은 표시되는 속성은 클라이언트 측에서 엔티티

와 RIA 서비스를 실행하고 나는 RIA이 클래스에서 파생 된 개체를, 서비스가,

System.ServiceModel.DomainServices.Client.Entity 

를 변경하는 (변경되지 않은 경우 HasChanges 필드 또는 EntityState 필드 사용). 내 엔티티 중 어느 것이 바뀌 었는지 확인할 수있는보다 안정적인 방법이 필요합니다.

이유는 필자의 엔티티에 일반 텍스트 필드, 서식있는 텍스트 필드 및 HTML 필드의 세 가지 텍스트 필드가 있기 때문입니다. 그들은 모두 같은 본문에 링크되어 있습니다. 내 편집기 컨트롤에 표시하면 서식있는 텍스트와 HTML 필드가 미묘하게 수정되지만 일반 텍스트 필드는 수정되지 않습니다.

그래서

는 이상적으로 같은 것을 할 싶습니다 '엔티티를보다 다른 수정 된 필드가있는 HTML 또는 서식있는 텍스트 필드'일반 텍스트 필드가 실제 '에 데리러

'사용자가 텍스트를 변경합니다.

'ModifiedProperties'및 'OriginalValues'라고하는 Entity 기본 클래스에 일부 비공개 멤버가 있는데 사용 방법이 있다면 이상적입니다.

+0

당신은 ObjectContext.ChangeSetEntries''에 봤어? –

+1

클라이언트 측에 ObjectContext가 있습니까? – peter

답변

0

좋아, 내가 사용중인 서식있는 텍스트 컨트롤이 바인딩을 지원하지 않는다는 것을 면밀히 조사한 결과. 그게 내가 제 3 자 제어 Liquid.RichTextBlock를 사용하고, 이런 일이 코드에서

public void LoadText() // loads from the database and puts into the UI control 
{ 
    control.RichText = entity.RichText; 
    control.Html = entity.Html; 
    control.Body = entity.Body; 
} 

public void UpdateText() // update the entity with the updated text 
{ 
    entity.RichText = control.RichText; 
    entity.Html = control.Html; 
    entity.Body = control.Body; 
} 

을 의미한다. 텍스트가 편집되지 않은 경우에도이 컨트롤이 다른 서식있는 텍스트 및 HTML을 반환하는 경우가 있습니다. 이것은 크기를 조절할 수있는 팝업에있는 컨트롤의 너비와 관련이 있습니다.

Liquid.RichTextBlock 컨트롤에는 'History'라는 속성이 있으며 실제로이 속성을 사용하여 사용자가 실제로 텍스트를 업데이트했는지 여부를 알 수 있습니다. 이 같은 주요 뭔가에

public void UpdateText() // update the entity with the updated text 
{ 
    if (control.History.Count > 0) // the user has updated the format and or the text 
    { 
     entity.RichText = control.RichText; 
     entity.Html = control.Html; 
     entity.Body = control.Body; 
    } 
} 
관련 문제