問: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
參考資料