允许保存新项目并在 SharePoint 中继续 NewForm.aspx
Allow Save new item and continue in SharePoint NewForm.aspx
简短 : 如何制作默认 SharePoint NewForm.aspx 添加项目并停留在输入页面上而不是 returning 到列表视图 AllItems ?
长:
我被要求允许 SharePoint 用户在 SharePoint 列表中输入许多新项目,而不必在每次保存时 return 到 AllItems。
此要求适用于许多列表,因此我不想为每种可能的内容类型开发特定代码。
我虽然可以编写一个简短的 js 文件并在用户想要保存并继续时使用它。
到目前为止,我尝试在内容编辑器 Web 部件 (CEWP) 中添加 "Save and continue" 行为。
我的第一种方法是更改 Source= 参数但没有成功(取消 returned 也到新源或者在 preSaveAction() 中设置时忽略源。
然后我尝试在 preSaveAction 中设置表单操作:
<script type="text/javascript">
JSRequest.EnsureSetup();
var src = JSRequest.QueryString["Source"];
var exit = JSRequest.QueryString["exit"];
var isDialog = JSRequest.QueryString["IsDlg"];
var dlgParam = "";
if (isDialog)
dlgParam = "&IsDlg="+isDialog;
//If exit is defined its keeping default source parameter
if (exit) {
document.forms.aspnetForm.action= location.pathname+"?Source="+exit+dlgParam;
}
function PreSaveAction(){
//before saving the original source is saved in exit
exit=JSRequest.QueryString["Source"];
src=escapeProperly(window.location.protocol + '//' + window.location.host + _spPageContextInfo.serverRequestPath);
document.forms.aspnetForm.action=location.pathname+"?Source="+src+"&exit="+exit+dlgParam;
return true;
操作已按预期更新,但在保存新项目时用户仍被重定向到 AllItems.aspx。
另一种尝试是添加一个特定按钮,重复使用功能区和页面按钮中使用的 SharePoint javascript 操作
<script type="text/javascript">
function adressePage() {
return window.location.protocol + '//' + window.location.host + _spPageContextInfo.serverRequestPath;
}
function saveContinue() {
document.getElementById("cmdSaveContinue").disabled=true;
if (!PreSaveItem()) return false;
if (SPClientForms.ClientFormManager.SubmitClientForm("WPQ2")) {
SP.UI.Notify.addNotification("Saving ...", false);
window.location = adressePage();
} else {
WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("cmdSaveContinue", "", true, "", adressePage(), false, true));
}
document.getElementById("cmdSaveContinue").disabled=false;
}
</script>
<input id="cmdSaveContinue" onclick="javascript:return saveContinue();" type="button" value="Enregistrer et continuer" style="top: -5.5em; position: relative;"/>
这样,处理表单验证并保存项目。
如果错误消息被 return 编辑,表单将保留在 NewItem 上,但错误消息在 window.location=...
执行后丢失。
当一切正常时,该项目将被保存,用户将处于一个新的空 NewForm.aspx.
但是 SharePoint SPClientForms.ClientFormManager.SubmitClientForm("WPQ2")
是异步执行的,有时(不总是)重定向到
AllItems 在我的重定向结束后出现。
我被困在这一点上,害怕在添加列表时被迫编辑 SPDesigner 中的每个 NewForm 页面...
信息:本地 SharePoint Server 2013,可能使用 SPDesigner
您可以通过 InfoPath 执行此操作,如果您拥有 SP on prem 和 SPDesigner 访问权限,则应该可以使用它。如果转到 InfoPath 并自定义表单,则可以转到“数据”>“提交选项”>“(高级 >>)”>“提交后”>“新建表单”。
您可以 google 'InfoPath Save and New' 或访问 Microsoft 站点并查看 this 演练。他们的演练建议使用两个按钮,其中一个打开新表单,另一个关闭表单。
创建自定义 NewForm.aspx 并添加新按钮并在重定向中提及 {}。
<input type="button" class="contact-button" value="Submit and Create New Request" name="btnSaven" onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={}')}" />
将脚本编辑器 Web 部件添加到视图
<input type="button" value="Add items in continuity" onclick="openNewItemDialog()"/>
<script>
function openNewItemDialog() {
var options = {
url: 'http://sp/sites/dev/Lists/<yourList>/NewForm.aspx',
dialogReturnValueCallback: function(result, returnValue) {
if(result== SP.UI.DialogResult.OK)
{
openNewItemDialog()
}
}
}
SP.UI.ModalDialog.showModalDialog(options);
}
简短 : 如何制作默认 SharePoint NewForm.aspx 添加项目并停留在输入页面上而不是 returning 到列表视图 AllItems ?
长:
我被要求允许 SharePoint 用户在 SharePoint 列表中输入许多新项目,而不必在每次保存时 return 到 AllItems。
此要求适用于许多列表,因此我不想为每种可能的内容类型开发特定代码。
我虽然可以编写一个简短的 js 文件并在用户想要保存并继续时使用它。
到目前为止,我尝试在内容编辑器 Web 部件 (CEWP) 中添加 "Save and continue" 行为。
我的第一种方法是更改 Source= 参数但没有成功(取消 returned 也到新源或者在 preSaveAction() 中设置时忽略源。
然后我尝试在 preSaveAction 中设置表单操作:
<script type="text/javascript">
JSRequest.EnsureSetup();
var src = JSRequest.QueryString["Source"];
var exit = JSRequest.QueryString["exit"];
var isDialog = JSRequest.QueryString["IsDlg"];
var dlgParam = "";
if (isDialog)
dlgParam = "&IsDlg="+isDialog;
//If exit is defined its keeping default source parameter
if (exit) {
document.forms.aspnetForm.action= location.pathname+"?Source="+exit+dlgParam;
}
function PreSaveAction(){
//before saving the original source is saved in exit
exit=JSRequest.QueryString["Source"];
src=escapeProperly(window.location.protocol + '//' + window.location.host + _spPageContextInfo.serverRequestPath);
document.forms.aspnetForm.action=location.pathname+"?Source="+src+"&exit="+exit+dlgParam;
return true;
操作已按预期更新,但在保存新项目时用户仍被重定向到 AllItems.aspx。
另一种尝试是添加一个特定按钮,重复使用功能区和页面按钮中使用的 SharePoint javascript 操作
<script type="text/javascript">
function adressePage() {
return window.location.protocol + '//' + window.location.host + _spPageContextInfo.serverRequestPath;
}
function saveContinue() {
document.getElementById("cmdSaveContinue").disabled=true;
if (!PreSaveItem()) return false;
if (SPClientForms.ClientFormManager.SubmitClientForm("WPQ2")) {
SP.UI.Notify.addNotification("Saving ...", false);
window.location = adressePage();
} else {
WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("cmdSaveContinue", "", true, "", adressePage(), false, true));
}
document.getElementById("cmdSaveContinue").disabled=false;
}
</script>
<input id="cmdSaveContinue" onclick="javascript:return saveContinue();" type="button" value="Enregistrer et continuer" style="top: -5.5em; position: relative;"/>
这样,处理表单验证并保存项目。
如果错误消息被 return 编辑,表单将保留在 NewItem 上,但错误消息在 window.location=...
执行后丢失。
当一切正常时,该项目将被保存,用户将处于一个新的空 NewForm.aspx.
但是 SharePoint SPClientForms.ClientFormManager.SubmitClientForm("WPQ2")
是异步执行的,有时(不总是)重定向到
AllItems 在我的重定向结束后出现。
我被困在这一点上,害怕在添加列表时被迫编辑 SPDesigner 中的每个 NewForm 页面...
信息:本地 SharePoint Server 2013,可能使用 SPDesigner
您可以通过 InfoPath 执行此操作,如果您拥有 SP on prem 和 SPDesigner 访问权限,则应该可以使用它。如果转到 InfoPath 并自定义表单,则可以转到“数据”>“提交选项”>“(高级 >>)”>“提交后”>“新建表单”。
您可以 google 'InfoPath Save and New' 或访问 Microsoft 站点并查看 this 演练。他们的演练建议使用两个按钮,其中一个打开新表单,另一个关闭表单。
创建自定义 NewForm.aspx 并添加新按钮并在重定向中提及 {}。
<input type="button" class="contact-button" value="Submit and Create New Request" name="btnSaven" onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={}')}" />
将脚本编辑器 Web 部件添加到视图
<input type="button" value="Add items in continuity" onclick="openNewItemDialog()"/>
<script>
function openNewItemDialog() {
var options = {
url: 'http://sp/sites/dev/Lists/<yourList>/NewForm.aspx',
dialogReturnValueCallback: function(result, returnValue) {
if(result== SP.UI.DialogResult.OK)
{
openNewItemDialog()
}
}
}
SP.UI.ModalDialog.showModalDialog(options);
}