2013-11-04 8 views
0

상태 시스템 워크 플로 및 관련 작업이 있습니다. 작업은 일부 조건을 충족 할 때까지 편집 할 수 있습니다. 정보 작업에 의해 형성되는 작업. 이 작업에는 하나의 사용자 선택 필드가 있습니다. 나는이 값들과 함께 3 개의 필드를 할당한다 :양식 업데이트 후 infopath 양식에서 사람 선택기 값을 변경하는 방법

그것은 작동한다, 나는 나의 폼 값에서이 사용자를 볼 수있다. 그러나 사용자 (예 : "user2")를 변경하고 양식을 제출하면 수동으로 변경된 필드 값을 검색 할 수 없으며 항상 "user1"값을 반환합니다. 당신은 그런 문제에 직면하는 경우

private void onTaskChanged_Operator_Invoked(object sender, ExternalDataEventArgs e) 
{ 
    this.onTaskChanged_AfterProperties = this.onTaskChanged.AfterProperties; 
    this.onTaskChanged_BeforeProperties = this.onTaskChanged.BeforeProperties; 

    // here I cannot retrieve changed field value, always returns: SP\user1 
    this.workflowProperties.Item["UserName"] = 
     this.onTaskChanged_AfterProperties.ExtendedProperties["TaskAccountId"].ToString(); 
    this.workflowProperties.Item.Update(); 
} 

은, 당신의 문제를 이해하는 약간의 문제가있어 ... 그와

답변

0

를 도와주세요, 그러나 여기에서 두 가지 답변입니다. 사용자 선택기 필드의 값을 성공적으로 설정하려면 DisplayName, AccountId 및 AccountType의 세 필드를 모두 정확하게 채워야합니다. AccountType은 항상 "User"이지만 다른 두 가지는 광고 또는 사용자 데이터를 가져 오는 모든 곳과 정렬되어야합니다. 사람들 선택 도구에서 데이터를 얻으려면 가장 좋은 솔루션은 종종 the double eval trick을 포함합니다. eval(eval(person, "concat(my:AccountId, ';')"), "..") 목록에서 첫 번째 항목 만 가져 오는 경우 여러 항목이 올바르게 처리됩니다.

+0

방금 ​​내 질문을 업데이트했습니다. 현재 더 명확합니다. – user2954017

+0

그렇다면 문제의 원인을 확실히 알 수 없습니다. 아마도 user1을 덮어 쓰는 대신 user2를 추가하는 것일 수 있습니다. 사용자 속성 (DisplayName, AccountId 및 AccountType)은 사람마다 존재하므로 어쩌면 사람 [0]의 데이터 만 선택할 수 있습니다. 나는 이것에 대한 경험이 없기 때문에 좀더 지식이있는 사람이 대답 해 주길 바랍니다. –