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

原创 2014年07月19日 13:54:14

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

效果如图:

这里的思路如下:

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方法还原。

最终的代码如下:

 <script type="text/javascript" src="/siteassets/js/jquery.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var btnsave = $("input[id*='diidIOSaveItem']")[1];
            var tableSave = $(btnsave).parents(".ms-toolbar").eq(0);
            var strsaveAndNew = ' <td class="ms-toolbar" nowrap="nowrap"><input type="button" value="SaveAndNew" id="btnsaveAndNew" /></td><td class="ms-separator"> </td>';
            $(strsaveAndNew).insertBefore(tableSave);

            window.savefun = GetUrlKeyValue;
            $("#btnsaveAndNew").click(function () {
                window.btnsaveAndNew = true;

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

                $(btnsave).click();
                window.btnsaveAndNew = false;
            });

        });
        setInterval(function () {
            var errors = $("span[id^='Error_']");
            if (errors.length > 0 && !window.btnsaveAndNew) {
                window.GetUrlKeyValue = window.savefun;
            }
        }, 100);
    </script>


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

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

页面添加置顶按钮

给页面添加置顶按钮,当页面滚动到
  • rzg813
  • rzg813
  • 2014-04-24 16:00
  • 2996

wordpress中添加上一页、下一页按钮的方法

在wordpress博客中,要实现添加上一页,下一页按钮,方法是非常简单的。如果只是单纯获取链接,只需如下代码即可: 其中函数中第一变量为显示的格式化字符串,第二个为显示的文本内容,第三个布尔型...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

添加Action 按钮

编写:Vincent 4J - 原文:http://developer.android.com/training/basics/actionbar/adding-buttons.html Action...

dataGridView添加按钮

private void frmCheckoutList_Load(object sender, EventArgs e) { string sql = "se...

页面异步保存列表列

依赖jsw

用友NC63界面新增按钮实现方法

NC开发最基本的添加按钮并实现按钮事件业务逻辑处理,下面写一个例子介绍该过程的实现方法。 拿物流执行模块作为例子,在计量单维护界面增加两个按钮“A杆”“B杆”,单击这两个按钮,分别控制A和B道闸...

在昨天作业的基础上添加 :删除按钮,修改并保存按钮 和 添加按钮。完成这些按钮所对应的功能(XmlDocument)。

using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste...

在 ActionBar 添加刷新按钮

在以前版本的 Gmail 应用中,ActionBar 上有个刷新菜单,点击一下刷新菜单变成一个转圈的刷新标示动画图片。 之前实现该功能的时候都是使用一个类库 RefreshActionItem 来实现...

Android中EditText后添加删除按钮后的实现

编写不易,如有转载,请声明出处: 梦回河口: Demo展示图片关键代码 点击叉叉置空EditText mDelete.setOnClickListener(new View.OnClickListen...

SimpleAdapter创建ListView

1 说明SimpleAdapter是比较常用的列表适配器,用它来创建更加丰富和个性化的列表单项样式。这里介绍一下它的用法。2 使用说明构造函数如下:SimpleAdapter(Context cont...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)