0

ステート マシン ワークフローと関連タスクがあります。タスクは、いくつかの条件を満たすまで編集できます。infopath によって形成されたタスク。これらのタスクには、ユーザー ピッカー フィールドが 1 つ含まれています。これらの値を 3 つのフィールドに割り当てます。

private void createTask_Operator_MethodInvoking(object sender, EventArgs e)
{
 this.createTask_Id = Guid.NewGuid(); 

 this.createTask_Properties.ExtendedProperties["ows_TaskDisplayName"] = "user1";
 this.createTask_Properties.ExtendedProperties["ows_TaskAccountId"] = @"SP\user1";
 this.createTask_Properties.ExtendedProperties["ows_TaskAccountType"] = "User"; 
}

それはうまくいきます、私は私のフォームでこれらのユーザーの価値を見ることができます。しかし、ユーザー (例: "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();
}

そのような問題に直面した場合は、私を助けてください...

4

1 に答える 1

0

あなたの問題を理解するのに少し苦労していますが、ここに 2 つの答えがあります。ユーザー ピッカー フィールドの値を正しく設定するには、DisplayName、AccountId、および AccountType の 3 つのフィールドすべてに正しく入力する必要があります。AccountType は常に "User" ですが、他の 2 つは AD に合わせるか、ユーザー データを取得する場所に合わせる必要があります。ピープル ピッカーからデータを取得するには、多くの場合、最良の解決策に double eval トリックが含まれます。eval(eval(person, "concat(my:AccountId, ';')"), "..")これは、リストの最初のものだけを取得することを意味する場合、複数のエントリを正しく処理します。

于 2013-11-05T15:50:59.800 に答える