2

CRM 2011 エンティティ フォームのカスタム リボン ボタンをクリックすると、外部リンクを呼び出す Javascript を作成しています。JavaScript では、フォームが汚れているかどうかをチェックしています。フォームが汚れている場合 (一部のフィールドがユーザーによって変更されていることを意味します)、JScript はXrm.Page.data.entity.save()を使用して強制的にフォームを保存します。ただし、必須フィールドが入力されていない場合、強制保存は行われず、カスタム メッセージを表示してそれらのフィールドに入力し、制御フローを終了して、外部リンクを開いてはいけません。フォームが保存されたかどうかを取得する方法..?

以下のコードの一部:

function buttonOnClick() {
    if (Xrm.Page.data.entity.getIsDirty()) 
    {
        Xrm.Page.data.entity.save();
    }
    else 
    {
        window.open('http://www.google.com', 'name', 'width=900,height=800');
    }
}
4

3 に答える 3

3

「フォームが保存されました」と言うのは初めてですか?その場合は、フォームの種類を照会できます:-

Xrm.Page.ui.getFormType();

(たとえば、作成または更新中ですか)。フォームが既に更新モードになっている場合は、フォームが汚れているかどうかを確認できます。どの必須フィールドが入力されていないかを知りたい場合は、フォームの属性をループして、それらがビジネス上必須かどうかを照会することもできます:-

Xrm.Page.data.entity.attributes.get("myAttribute").getRequiredLevel();

これをユーザーへの警告メッセージに追加します。

于 2012-04-03T13:02:08.623 に答える
0

独自のOnSaveメソッドを追加してフィールドを検証し、フィールドが有効かどうかに基づいて値を返すことができます。

例えば

Xrm.Page.data.entity.addOnSave(function() {
    var isValid = VerifyOnSave();
    if (isValid) {
        //continue
    }
    else {
        //show errors, cancel save
    }
);

function VerifyOnSave()
{ 
    //<insert validation logic here>
    return true;
}

保存されたフォームは明示的にはわかりませんが、フォームが有効かどうかはわかります。これは、十分に近い場合とそうでない場合があります。

于 2012-04-03T13:00:35.597 に答える