在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

相關文章
相關標籤/搜索