2017-06-15 16 views
-2

Sdk.Sync.Updateを使用して、選択リストタイプのレコードの属性をnullに更新することはできますか?それは私のために働いていない。ここでSdk.Sync.Updateを使用してピックリスト値をnullに更新しない

は、私が何をすべきかです:

var detailsObj = updatedDetailsObj; // I get updatedDetailsObj from previous logic, not shown here 
var operation = new Sdk.Entity("kcl_operation"); 
operation.setId(operationId, false); // I have operationId from previous logic, not shown here 
operation.addAttribute(new Sdk.String("op_updatedAccount", detailsObj.UpdatedAccount)); // works, get updated 
operation.addAttribute(new Sdk.OptionSet("op_updatedExplanation", null)); // doesn't get updated 
Sdk.Sync.update(operation); 

Sdk.Sync.updateが完了した後、文字列フィールドが更新されますが、選択リスト項目は、その前の値が残され、代わりにnullの。 また、Sdk.Sync.updateの内部でXMLが送信されているのを見て、実際には、"op_updatedExplanation"nullのペアが欠けています。

どのように動作させることができますか?

を追加しました: ユーザーが複数のレコードをチェックし、私はそれらのすべての更新をする必要があるように私は、フォーム内が、グリッド・ページ内にそれをやっていませんよ。

+3

方法が習慣です、彼らは本当のSDKメッセージにラッパーしている、あなたは方法 –

+0

が、私はそれらを使用しない気にしない、私は方法を示して答えを受け入れるだろうと書いた人に尋ねるべきそれは別の方法で行うことができますか? – HeyJude

+0

Guidoが言及しているように、カスタムライブラリを使用しています。おそらく、オプションセットの値を 'null 'に正しく設定することはできません。スニペットを表示しているだけで、この問題を解決する手助けはできません。 –

答えて

0

標準CRM SDKコード(エンティティ名とフィールド名を想定):サービスは

+1

私はそれをクライアント側(つまりJavascriptで)にする必要があります – HeyJude

0

IOrganizationServiceインスタンスでヌルとして値を設定するには、このスニペットを使用してください

Entity operation = new Entity("kcl_operation"); 
operation.Id = operationId; 
operation["op_updatedexplanation"] = null; 
service.Update(operation); 

Xrm.Page.getAttribute("op_updatedexplanation").setValue(null); 

これはフォームの値を設定するだけです。値をデータベースに保存するには、フォームを保存する必要があります。

Xrm.Page.data.entity.save(); 

コントロールが無効な場合は、submitmode属性も設定する必要があります。あなたが呼び出している

Xrm.Page.getAttribute("op_updatedexplanation").setSubmitMode("always"); 
+1

申し訳ありませんが、私はそれを言及すべきでした:私はフォーム内ではなくグリッドページ内で行い、ユーザはいくつかのレコードをチェックし、それらのすべて。 – HeyJude

+0

あなたは一括編集でそれを行うことはできませんか? –

+0

これらのオプションは、あなたが快適であるかどうかを調べて使用する必要があります。 https://msdn.microsoft.com/en-us/library/gg309549(v=crm.7).aspx –

関連する問題