• 在SharePoint列表中使用自增栏


    问:sps2010里能不能新建个栏,数字型的,自动加一

    答:在SharePoint里,有很多方法可以实现一个自增栏。在这里,我将介绍其中两种方式。

    1、计算栏

    2、列表项事件接收器

    1、采用计算栏来实现:

    这是最最简单的方法。这样无需编写任何代码就可以实现一个自增栏。我们只需要创建一个栏,栏类型选择计算值(基于其他栏的计算)。然后在公式一节,输入[ID]。

    事实上,我们是取SharePoint内置的ID字段,该字段是从1开始的。

    如果你想从100开始自增1,那么你可以修改公式为[ID]+99就可以了。

    2、使用列表项事件接收器来实现:

    当然如果通过代码实现就更地道了。这样的好处是可以允许用户编辑已生成的值。当然我们也可以可以写代码通过Feature的激活和关闭来控制该字段的可见性,只读性等。通过列表项事件接收器,在ItemAdded事件上,我们可以查找之前添加的项中的最大值,然后自增后将值存到当前新添加的项对应的自增栏上。

    代码参考:

        public override void ItemAdded(SPItemEventProperties properties)
            {
                SPWeb web = properties.OpenWeb();
                bool allowUpdates = web.AllowUnsafeUpdates; //store original value
                this.EventFiringEnabled = false;
     
                try
                {
                    web.AllowUnsafeUpdates = true;
                    /*获取列表*/
                    SPList list = web.Lists[properties.ListId];
                    var highestvalue = 0;
                    var objQuery = new SPQuery
                                       {
                                           Query ="<OrderBy><FieldRef Name='" + 栏名称 
                                           +"' Ascending='False' /></OrderBy><RowLimit>1</RowLimit>",
                                           Folder = list.RootFolder
                                       };
     
                    SPListItemCollection colItems = list.GetItems(objQuery);
                    if (colItems.Count > 0)
                    {
                        highestvalue = int.Parse(colItems[0][ColumnName].ToString());
                    }
     
                    var currItem = properties.ListItem;
                    currItem[ColumnName] = highestvalue + 1;
                    currItem.SystemUpdate(false);
                     
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex.Message);
                }
                finally
                {
                    this.EventFiringEnabled = true;
                    web.AllowUnsafeUpdates = allowUpdates; //恢复原值
                }
            }

    祝,工作开心!

    参考资料

    Creating auto-increment field in SharePoint List

  • 相关阅读:
    jvm详解
    JVM堆外内存
    Guava基本使用
    Mondrian开源OLAP引擎详解
    Java8新特性简明教程
    TCP/IP协议三次握手和四次挥手详解
    Go 方法与函数区别
    Go 通道 Chan 详解
    kylin详细介绍
    计数排序
  • 原文地址:https://www.cnblogs.com/Sunmoonfire/p/3493246.html
Copyright © 2020-2023  润新知