[C#.NET][Sharepoint 2013] 如何使用 CSOM 操作文件 CheckOut/CheckIn/Publish 狀態

[C#.NET][Sharepoint 2013] 如何使用 CSOM 操作文件 CheckOut/CheckIn/Publish 狀態

開始前要先設定文件庫的版本設定

http://www.dotblogs.com.tw/yc421206/archive/2014/06/03/145357.aspx#%E5%89%8D%E7%BD%AE%E4%BD%9C%E6%A5%AD%EF%BC%8C%E9%96%8B%E5%95%9F%E6%B8%85%E5%96%AE%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6

本文章節

版本號定義:
Publish:
Publish Scenario:
Check Out:
Check In:
Check Out& Check In Scenario:


版本號定義:

開始之前要先瞭解一下版本號的定義

如下圖,『0.1』

0 代表,主要版號(Major)

1 代表,草稿版號(Minor)

image

 

Publish:

對應到 Sharepoint 裡的 UI 操作,如下圖:

image

 

發佈後,版號就跳正式板,如下圖:

image

 

 

程式碼其實就很簡單,上傳文件後立馬發佈 uploadFile.Publish("正式版1.0");

{
    using (ClientContext client = new ClientContext("http://sps2013/CsomApi"))
    {
        client.Credentials = new NetworkCredential(YourAccount, YourPassWord);

        var list = client.Web.Lists.GetByTitle("Documents");
        FileCreationInformation newfile = new FileCreationInformation()
        {
            Content = System.IO.File.ReadAllBytes("demo.docx"),
            Url = "demo.docx",
            Overwrite = true,
        };

        var uploadFile = list.RootFolder.Files.Add(newfile);
        uploadFile.Publish("正式版1.0");
        client.Load(uploadFile);
        client.ExecuteQuery();
    }
}

 

Publish Scenario:

當我不斷的上傳一份文件,它會累加跳草稿版號(Minor),如 0.1 , 0.2 , 0.3…

直到調用 Microsoft.SharePoint.Client.FIle.Publish()後,才會跳主要版號(Major),草稿版號歸 0,如下圖所示:

image


Check Out:

  1. 其他人不能對該份文件操作
  2. 產生一個草稿號,比如 1.1
  3. 可以不斷的編輯文件或上傳文件,這時草稿版號不會累加

 

在Sharepoint 裡的 UI 操作只是很簡單的按下CheckOut,如下圖

image

 

簽出後就會看到有一個綠色小箭頭,也可以看到是誰簽出這份文件的

image

 

程式碼邏輯很簡單,找出該份文件,然後簽出

{
    using (ClientContext client = new ClientContext("http://sps2013/CsomApi"))
    {
        client.Credentials = new NetworkCredential(YourAccount, YourPassWord);

        var list = client.Web.Lists.GetByTitle("Documents");
        var findFile = list.RootFolder.Files.GetByUrl("demo.docx");
        findFile.CheckOut();
        client.Load(findFile);
        client.ExecuteQuery();
    }
}


Check In:

Checkout 後,有三條路可以選,否則其他人無法編輯該份文件

  1. MajorCheckIn:簽入主要版本
  2. MinorCheckIn:簽入草稿
  3. UnCheckout:放棄草稿,回到最新版

 

在 Sharepoint UI 裡,即可看到選單,如下圖:

image

 

CheckIn有兩條路,一條是進草稿版本,一條是進主要版本,如下圖:

image

 

程式碼如下:

就是由 CheckinType 列舉型別 決定要簽入主要、草稿版本

{
    using (ClientContext client = new ClientContext("http://sps2013/CsomApi"))
    {
        client.Credentials = new NetworkCredential(YourAccount, YourPassWord);
        var list = client.Web.Lists.GetByTitle("Documents");
        var findFile = list.RootFolder.Files.GetByUrl("demo.docx");
        findFile.CheckIn("正式版2.0", CheckinType.MajorCheckIn);
        client.Load(findFile);
        client.ExecuteQuery();
    }
}

 

若調用 findFile.UndoCheckOut(); 就會放棄草稿,回到最新的主要版本


Check Out& Check In Scenario:

我不想讓其他同事編輯這份文件,所以我簽出它(CheckOut File),在這段時間裡我不斷的更新檔案內容(Upload File),因為 Checkout 的關係草稿版號不會跳了

文件還在修改期間,忽然接穫出差一星期的命令,同事 A 必須接手我的工作,於是我調用 MinorCheckIn,讓同事 A 可以繼續編輯文件,當然這時換同事 A 簽出

當同事 A 滿意這份文件時則調用 MajorCheckIn,讓它進版

 

image

 


 

 

 

 

 

 

 

 

 

 

 

 

本文出自:http://www.dotblogs.com.tw/yc421206/archive/2014/06/05/145389.aspx

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo