2017-05-31 105 views
0

我必須以編程方式設置列表中計算字段的公式。 該字段必須是其他兩個字段的總和。你能否給我提供我必須在代碼中插入的公式的語法?我找不到任何例子。 你能否給我提供公式語法的參考,因爲我還需要創建另一個計算字段,它是兩個字符串字段的串聯。 謝謝Sharepoint計算字段公式語法

+0

你檢查我目前的答案嗎? – tinamou

+0

我回覆如下 – OuterSpace

回答

0

計算字段公式reference

您的任務使用簡單:

=[Column1] + [Column2] 

與服務器端的代碼創建計算領域reference

using (SPWeb oWebsite = SPContext.Current.Site.AllWebs["Website_Name"]) 
{ 
    SPList oList = oWebsite.Lists["MyList"]; 
    SPFieldCollection collFields = oList.Fields; 

    string strNewFieldName = collFields.Add("MyNewColumn", 
     SPFieldType.Calculated, false); 
    SPFieldCalculated strNewField =  
     (SPFieldCalculated)collFields[strNewFieldName]; 
    strNewField.Formula = "=[Column1]<[Column2]"; 
    strNewField.Update(); 
} 

與CSOM創建計算領域代碼reference1,reference2。正如你在下面看到的,你需要記住約escape special characters in xml

string formula = "<Formula>=FirstName&amp; \" \" &amp;LastName&amp; \" (id: \" &amp;EmployeeID&amp; \" \"</Formula>" 
     + "<FieldRefs>" 
     + "<FieldRef Name='FirstName' />" 
     + "<FieldRef Name='LastName' />" 
     + "<FieldRef Name='EmployeeID' />" 
     + "</FieldRefs>"; 

string schemaCalculatedField = "<Field ID='<GUID>' Type='Calculated' Name='FullName' StaticName='FullName' 
    DisplayName='Full Name' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>" + formula + "</Field>"; 
Field fullNameField = demoList.Fields.AddFieldAsXml(schemaCalculatedField, true, AddFieldOptions.AddFieldInternalNameHint); 
clientContext.ExecuteQuery(); 

工作代碼爲你實現(評論):

string formula = "<Formula>=Nome1&amp;&quot; &quot;&amp;Cognome1&amp;&quot;(id:&quot;&amp;Campo1&amp;&quot;)&quot;</Formula>" + "<FieldRefs>" + "<FieldRef Name='Nome1'/>" + "<FieldRef Name='Cognome1'/>" + "<FieldRef Name='Campo1'/>" + "</FieldRefs>"; 
string schemaCalculatedField = "<Field ID='1F2ABCC0-D243-40F0-A18D-E0AEF7FE3EB6' Type='Calculated' Name='FullName' StaticName='FullName' DisplayName='Full Name' ResultType='Text' Required='TRUE' ReadOnly='TRUE'>" + formula + "</Field>"; 
Field fullNameField = context.Web.Lists.GetByTitle("PnP Custom List3").Fields.AddFieldAsXml(schemaCalculatedField, true, AddFieldOptions.AddFieldInternalNameHint); 
context.ExecuteQuery(); 
+0

謝謝你的回答。我忘了告訴我需要使用CSOM代碼創建它們。我試過CSOM的例子,但它沒有工作,你是什麼意思在xml中編碼特殊字符? – OuterSpace

+0

用您的CSOM代碼更新您的問題。我的意思是逃避:https://stackoverflow.com/a/1091953/1498401 – tinamou

+0

串式= 「 = Nome1 & \」 \ 「& Cognome1 & \ 」(ID:\「 & Campo1 & \ 」\「」 + 「」 + 「」 + 「」 + 「」 + 「」; – OuterSpace