文章出處

問: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


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()