zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    Http常用请求
    大量数据导出到Excel(不使用微软Excel控件)---------------转自CSDN--rocket2010
    ASP.NET 在IIS上发布时,报错404.17 提示找不到系统文件
    PTA7-1 一元多项式的乘法与加法运算(Java实现)
    Java输入几行字符串
    看电视(贪心算法)
    出租车费(贪心算法)
    简化路径(栈实现)
    有效的括号
    链表反转
  • 原文地址:https://www.cnblogs.com/Sunmoonfire/p/3493246.html
Copyright © 2011-2022 走看看