分享人: 廣州華軟 無名
一. 前言
雖然SharePoint提供視覺化介面建表,但是,不利於開發自動化部署。通常,如果通過手動建表,我們先在測試環境建表,然後存為模板,再上傳到實際環境,最後根據模板來建立列表。況且,有些列表也就一次使用,也就沒必要存為模板。
二. 目錄
1.程式碼建表作用
2.如何使用程式碼建表
2.1前置條件
2.2關鍵程式碼
3總結
三. 程式碼建表作用
開發環境和實際使用環境是分離的,避免重複在各個環境手動建表;
程式碼和建表分離,如果增減欄位,後期要維護多個地方的資料,通過程式碼,可通過網站或網站集功能統一處理。
通過視覺化介面建表,我們需要先建內部名稱,然後再修改顯示名稱,通過程式碼可以一次搞定。
四. 如何使用程式碼建表
程式碼建表有多種方式,一種是通過SharePoint提供的開發模板建立列表,一種是通過SharePoint物件模型建立列表,這裡介紹的是使用SSOM物件模型建立列表。
4.1 前置條件
引用Microsoft.SharePoint.DLL類庫
引用名稱空間Microsoft.SharePoint;
當前登入使用者有建立列表許可權
4.2 關鍵程式碼
先建立列表,在建立表關聯欄位。
4.2.1 建立列表
var sPWeb= SPContext.Current.Web;
Guid guid = sPWeb.Lists.Add(列表內部名,列表描述, SPListTemplateType.GenericList);
SPList lst = sPWeb.Lists[guid];
lst.Title = “列表顯示名稱”;
lst.Update();
4.2.2 建立文字欄位
SPField tempFld = new SPField(flds, SPFieldType.Text.ToString(), 欄位內部名稱);
SPFieldText fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldText;
fld.MaxLength = 長度限制;
fld.DefaultValue = 預設值;
fld.Title = 欄位名稱;
fld.EnforceUniqueValues = 唯一值;
fld.Required = 必填
fld.Update();
4.2.3 建立是否欄位
SPField tempFld = new SPField(flds, SPFieldType.Boolean.ToString(), 欄位內部名稱);
SPField fld = flds.GetFieldByInternalName(flds.Add(tempFld));
fld.DefaultValue = 預設值;
fld.Title = 欄位名稱;
fld.Update();
4.2.4 建立數字欄位
SPField tempFld = new SPField(flds, SPFieldType.Number.ToString(), 欄位內部名稱);
SPField fld = flds.GetFieldByInternalName(flds.Add(tempFld));
fld.DefaultValue = 預設值;
fld.Title = 欄位名稱;
fld.Update();
4.2.5 建立整數字段
SPField tempFld = new SPField(flds, SPFieldType.Integer.ToString(), 欄位內部名稱);
SPField fld = flds.GetFieldByInternalName(flds.Add(tempFld));
fld.DefaultValue = 預設值;
fld.Title = 欄位名稱;
fld.Update();
4.2.6 建立選項欄位
SPField tempFld = new SPField(flds, SPFieldType.Choice.ToString(), 欄位內部名稱);
SPFieldChoice fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldChoice;
fld.Choices.AddRange(new string[]{選項值});
fld.DefaultValue = 預設值;
fld.Title = 欄位名稱;
fld.Update();
4.2.7 建立時間欄位
SPField tempFld = new SPField(flds, this.FieldType.ToString(), 欄位內部名稱);
SPFieldDateTime fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldDateTime;
fld.DefaultValue = 預設值;
fld.Title = 欄位名稱;
fld.DisplayFormat = 日期格式;
fld.FriendlyDisplayFormat = 日期顯示風格;
fld.Update();
4.2.8 建立查閱項欄位
string internalName = flds.AddLookup(欄位內部名稱,被關聯表guid, 是否必填);
SPFieldLookup fld = flds.GetFieldByInternalName(internalName) as SPFieldLookup;
fld.Title = 欄位名稱;
fld.LookupField =被關聯欄位;
fld.Update();
4.2.9 建立使用者欄位
SPField tempFld = new SPField(flds, SPFieldType.User.ToString(),欄位內部名稱);
SPFieldUser fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldUser;
fld.Title =欄位名稱;
fld.AllowMultipleValues =是否多值;
fld.SelectionMode = 設定選擇組還是使用者;
fld.Update();
4.2.10 建立連結欄位
SPField tempFld = new SPField(flds, SPFieldType.URL.ToString(), 自動內部名);
SPFieldUrl fld = flds.GetFieldByInternalName(flds.Add(tempFld)) as SPFieldUrl;
fld.Title = 欄位名稱; fld.Required = 是否必填
fld.Indexed =是否建立索引;
fld.EnforceUniqueValues =是否唯一
fld.DisplayFormat =顯示圖片還是連結
fld.Update();
五. 總結
對於開發而言,把建立表的過程寫在程式碼裡面,方便在同個地方統一維護。
如果一個列表被多個網站使用到,可以將列表作為網站功能。一啟用,則多個地方都可以同時使用。
SharePoint給我們提供了很多建立表的api,給我們開發帶來便利,提高了開發效率。