Sharepoint2013 列表的NewForm 页面添加一个 保存新建 按钮

昨天一同事问我如何在sharepoint2013的NewForm.aspx页面上添加一个 save and new的button。实现save 和new的功能,save的功能和默认的save按钮效果一至。

效果如图:

Sharepoint2013 列表的NewForm 页面添加一个 保存新建 按钮_第1张图片

这里的思路如下:

1)用juqery来动态添加一个saveandnew的button

2)新建按钮的click事件将要调用默认save 按钮的click方法

3)新按钮的click事件后页面跳转主要取决于url的Source参数,所以我们必须改写获取该参数的方法,该参数的读取是在init.debug.js的GetUrlKeyValue方法。

修改方式如下:

    window.savefun = GetUrlKeyValue;
                window.GetUrlKeyValue = function (keyName, bNoDecode, url, bCaseInsensitive) {
                    if (keyName != "Source") {
                        return window.savefun(keyName, bNoDecode, url, bCaseInsensitive);
                    }
                    else {
                        return "/Lists/CustList/NewForm.aspx";
                    }
                }

首先我需要把原先的GetUrlKeyValue方法保存起来,然后覆盖默认的GetUrlKeyValue方法。这是的函数调用情况

由于GetUrlKeyValue函数的覆盖是在 “保存新建 ”按钮事件里面,所以 当我进入页面后 直接点击 “保存” 按钮 页面跳转到AllItems.aspx,直接点击“保存新建” 按钮跳转到NewForm.aspx页面,但是 如果 点击“保存新建” 按钮时, 客服端 有error的时候,当我们修改数据后 点击“保存” 按钮时,这个时候就有问题(页面跳转到NewForm.aspx页面而不是AllItems.aspx),找了很久也没找到客服端真正验证的地方(如果大家知道的还请指教,反正不是后面这句代码 if (!PreSaveItem()) return false;if (SPClientForms.ClientFormManager.SubmitClientForm('WPQ2')) return false),最后无赖只好通过setInterval方法来检查页面是否有error信息,如果有 我们就把GetUrlKeyValue方法还原。

最终的代码如下:

 
    


有不对的地方 还请大家拍砖

你可能感兴趣的:(SharePoint)