0

リストにアイテムを正常に追加するクライアント側の JavaScript コードがあります。同じスクリプトを使用して、作成後に新しいアイテムを開きたいのですが、executeQueryAsync context.executeQueryAsync(onQuerySucceeded , onQueryFail); によって呼び出される onQuerySucceeded スクリプトを許可するまで、新しいアイテムは開きません。実行を許可されました。

onQuerySucceeded が完了するまで、新しいアイテムは SP リストまたはコードから開かれません。アイテムがロックされているようです。呼び出しの完了が許可されるとすぐに、アイテムは任意の方法で開くことができます。

context.dispose() を呼び出す必要がありますか、または行をコミットして sp ロックを解放する他の方法がありますか?

// 
newItem.update();

context.load(newItem);

context.executeQueryAsync(onQuerySucceeded , onQueryFail);

SP.UI.Notify.removeNotification(nid);
nid ='';

 function onQuerySucceeded (sender, args) {
    var lnewItem_ID = newItem.get_id();
    gNewItemId=lnewItem_ID;

    nid ='';

    if (gOpenNewItemDialog == "true" && gNewItemId != "" )
    {
        try
        {
         var linktopopup ="https://my.site.com/teams/abc/_layouts/listform.aspx?PageType=6&ListId={A88775A1-18F4-482C-A5AC-6F44C5B1CF03}&ID=" + gNewItemId;
                          // this call hangs.  Also, item shows in sp list but cant be opened.
            OpenPopup(linktopopup, "Edit new matter Task");

        }
        catch(err)
        {

            alert(' :( ');
        }
        gOpenNewItemDialog=false; //reset
    }           
}

function onQueryFail(sender, args) {
    alert('Failed to add new item. \nError: ' + args.get_message() + '\nStackTrace: ' + args.get_stackTrace());
}
4

1 に答える 1