4

2 つのセクションを持つフォームがあり、どちらにも「ビジネスに必要な」特定のフィールドが含まれています。私の現在のシナリオでは、これらのセクションの最初のセクションは非表示になっていますが、2 番目のセクションは表示されています。(基本的に、どちらが表示されるかは JScript で設定され、ドロップダウン リストの値に依存します)。

問題は、ユーザーが必須フィールドに値を入力せずに保存を押すと、フォームは 2 つの出現のうち最初の出現 (つまり、表示されていないもの) でそれを検証しようとすることです。ユーザーがこの値を入力していないことを発見すると、同じ問題のあるフィールドがフォームのさらに下に表示されているにもかかわらず、非表示のセクションが表示されます。

これを停止する方法、または別の方法で問題を回避する方法はありますか?

編集:

OK、以下の回答から、状況を十分に明確にしていない可能性があると思います。ユーザーがフィールドに入力していない場合に必須ステータスを検証したいので、フィールドを非必須に設定したり、トークン値を入力したりしてもうまくいくとは思いません。

私が抱えている問題は、それを検証したことであり、すでに表示されているフィールドではなく、非表示になっているフィールドのバージョンをユーザーに表示しています。

シナリオを描いた画像。 フォームが検証されると、非表示のセクション (赤い境界線で表示) が表示されます。

私が知る限り、単純な API を知っている限り、フィールドを必須に設定するかどうかは、特定の 1 つではなく、フォーム上のそのフィールドのすべての出現に等しく適用されます。

4

4 に答える 4

5

編集:これはきれいではありませんが、うまくいくはずです。

を使用して値のコレクションを取得できます

var bothControls = Xrm.Page.getAttribute('transactioncurrencyid').controls

そして使用して

bothControls.get(1)

2番目(ゼロベースのインデックス、ナッチ)を提供するので、無効にすることができます

bothControls.get(1).setDisabled(true)

つまり、検証はスキップされます

于 2013-02-06T14:54:57.980 に答える
1

要件値は次のように変更できます。

Xrm.Page.getAttribute("FieldName").setRequiredLevel("none");
于 2013-02-06T14:56:24.737 に答える
1

この呼び出しを使用してフィールドを不要にすることができますがXrm.Page.getAttribute("field_tonotbe_required").setRequiredLevel("none"); 、フィールドはフォーム上に2回あるため、Javscript SDKですべてのフィールドが不要になるのか、それとも最初のフィールドだけになるのかわからないため、階層をたどる必要があります。セクションからフィールドを見つけてから、setRequiredLevel変更したい正確なフィールドを呼び出します。

于 2013-02-06T14:57:54.010 に答える
0

変更時に起動し、表示されているセクションのフィールドから非表示のセクションの特派員に入力された値を入力するスクリプトを使用することを検討しましたか?

2つのビジネス必須フィールドがHubbaBubbaと呼ばれているとします。JavaScriptコードを両方に接続すると、変更時にHubbaが空かどうかがチェックされます(空の場合は、Bubbaの内容が空になります。そうでない場合は、Hubbaの内容がBubbaにコピーます。

フィールドは本質的に対応していると思いますので、フィールド間で情報をコピーすることができます

私は他の2つのオプションを考えました(最適ではないIMHO)。1つ目は、検証のオンとオフを切り替えることで強化された、Pedroの発言です。それがうまくいくかどうかわからない。完全を期すために言及しているだけです。

2つ目は、Polarisのプロセス駆動型UIを適用することです。それが機能するかどうかは本当にわかりませんが、理論的には機能するはずです。

于 2013-02-06T17:54:18.363 に答える