SharePoint程式碼建表(實戰)

廣州華軟發表於2019-04-01

分享人: 廣州華軟 無名

 

一. 前言

雖然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,給我們開發帶來便利,提高了開發效率。

相關文章