0

フォームにいくつかの JavaScript コードがあり、レコードが最初に作成されるときに、現在のユーザーが 2 つのルックアップ フィールドに自動入力されます。これはほとんどの場合問題なく動作しますが、初めて使用したときに (1 日あたり/セッションあたり?)、入力したい最初のフィールドにデータが入力されることに気付きましたが、フィールドはまだ空のように見えます。コードが機能していません。

フィールドが入力されていることを確認しましたが、このフィールドの表示だけが機能していませんが、その理由、特にこれが 1 つのフィールドだけで発生している理由がわかりません。

以下に使用するコードを投稿します。呼び出すときに、設定するフィールド名の配列を渡します。これがうまくいかない理由を誰かが教えてくれますか?

ありがとう

function RetrieveUserInfo(fieldsToSet) {

//Retrieve user information
var context;
var serverUrl;
var UserID;
var ODataPath;

context = Xrm.Page.context;
serverUrl = context.getServerUrl();
UserID = context.getUserId();
ODataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc";

var retrieveUserReq = new XMLHttpRequest();
retrieveUserReq.open("GET", ODataPath + "/SystemUserSet(guid'" + UserID + "')", true);
retrieveUserReq.setRequestHeader("Accept", "application/json");
retrieveUserReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");

retrieveUserReq.onreadystatechange = function () {
    SetUserValues(this, fieldsToSet);
};

retrieveUserReq.send();

}

function SetUserValues(retrieveUserReq, fieldsToSet) {

if (retrieveUserReq.readyState == 4
/* complete */
) {
    if (retrieveUserReq.status == 200) {
        var retrievedUser = this.parent.JSON.parse(retrieveUserReq.responseText).d;
        if (retrievedUser.FullName != null)

        //Get details of current user
        var setUservalue = new Array();
        setUservalue[0] = new Object();
        setUservalue[0].id = Xrm.Page.context.getUserId();
        setUservalue[0].entityType = 'systemuser';
        setUservalue[0].name = retrievedUser.FullName;

        //get form type
        var formType = Xrm.Page.ui.getFormType();

        if (formType != undefined) { //Create
            if (formType == 1) {

                //for each field specified, set it to the current user
                for (var i = 0; i < fieldsToSet.length; i++) {
                    Xrm.Page.getAttribute(fieldsToSet[i]).setValue(setUservalue);
                }
            }
        }
    }
    else {

    }
}

}

4

1 に答える 1

0

これはロングショットですが、機能しないフィールド - たまたま無効なフィールドではありませんか? 読み取り専用フィールドの場合は、追加する必要がある場合があります

Xrm.Page.getAttribute(“fieldname”).setSubmitMode(“always”);

onsaveイベントについて。

于 2013-01-25T22:04:39.093 に答える