リストにアイテムを正常に追加するクライアント側の 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());
}