在SharePoint列表中使用自增栏

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

答:在SharePoint里,有不少方法能够实现一个自增栏。在这里,我将介绍其中两种方式。ide

一、计算栏wordpress

二、列表项事件接收器this

一、采用计算栏来实现:

这是最最简单的方法。这样无需编写任何代码就能够实现一个自增栏。咱们只须要建立一个栏,栏类型选择计算值(基于其余栏的计算)。而后在公式一节,输入[ID]。spa

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

若是你想从100开始自增1,那么你能够修改公式为[ID]+99就能够了。code

 

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

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

代码参考:事件

    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; //恢复原值
            }
        }

祝,工做开心!rem

 

参考资料

Creating auto-increment field in SharePoint List

相关文章
相关标签/搜索