0

私はこのコードを実行しました:

Xrm.Page.data.entity.attributes.get("subject").setValue("Beep");;
alert(Xrm.Page.ui.controls.get("subject").setDisabled);
Xrm.Page.ui.controls.get("subject").setDisabled(true);

予想どおり、フィールドに「ビープ音」というテキストが表示されます。予想どおり、アラートはメソッドの内容を教えてくれます(そして、私が知る限り、彼らは想定どおりのことをしています)。

ただし、コントロール自体は無効になりません。私は何が間違っているのですか?

私は別のアプローチの1つの例を見たと思います( getsetDisabledの間に何かがありますが、数時間のグーグルの後、私は悩まされていたか、願い事を考えていたに違いないと結論付け始めています。

4

2 に答える 2

1

getControl 関数を使用していますが、正常に動作します。次の形式にする必要があります。

Xrm.Page.getControl(controlId).setDisabled(disabled);

また、送信モードを「常に」に設定しない限り、無効なコントロールは更新されないことに注意してください。

于 2012-12-28T17:27:24.083 に答える
1

あなたのコードは正しいので、動作するはずです。@Daryl が使用する構文は正しいです。これらの 2 つの行は同等です。短い方は、もう一方を短縮する構文糖衣です。だから、あなたは彼を使うべきです。

Xrm.Page.ui.controls.get("subject").setDisabled(true);
Xrm.Page.getControl("subject).setDisabled(true);

アラートを出してメソッドの内容を取得している場合は、正しいコンポーネントと正しいメソッドをヒットしていることを意味します。それでも、呼び出しにもかかわらず、コントロールは無効になりません。私はあなたが間違っていると思います。

これが私が思うことです。コントロールが無効になり、気付く前にフォームが更新され、無効化操作がレンダリングされます。

フィールド データ とは異なり、無効になっているというプロパティはデータベースに保存されないことに注意してください。フィールドを保護するように設計すると、そのままになります。しかし、クライアント側の JavaScript コードからそのようなプロパティを設定すると、ページのリロードが実行されるまで外観が持続します。

そのため、フィールドを無効にしておく必要がある場合は、GUI デザイナーから無効にするか、onLoadメソッドを起動してください。

于 2012-12-29T00:16:14.377 に答える