Синтаксис формулы вычисляемого поля Sharepoint

Мне нужно программно установить формулу для вычисляемого поля в списке. Это поле должно быть суммой двух других полей. Можете ли вы предоставить мне синтаксис формулы, которую я должен вставить в код? Я не могу найти ни одного примера. Можете ли вы предоставить мне ссылку на синтаксис формул, потому что мне также нужно создать другое вычисляемое поле, которое является объединением двух строковых полей. Спасибо


person OuterSpace    schedule 31.05.2017    source источник
comment
ты проверил мой текущий ответ?   -  person tinamou    schedule 02.06.2017
comment
Я ответил ниже   -  person OuterSpace    schedule 05.06.2017


Ответы (1)


Формулы вычисляемых полей ссылка:

Для вашей задачи используйте просто:

=[Column1] + [Column2]

Создание вычисляемого поля с справкой по коду сервера

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 в 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();
person tinamou    schedule 31.05.2017
comment
Спасибо за ваш ответ. Я забыл сказать, что мне нужно создать их с помощью кода CSOM. Я попробовал пример CSOM, но он не сработал. Что вы имеете в виду под кодированием специальных символов в xml? - person OuterSpace; 31.05.2017
comment
обновите свой вопрос своим кодом CSOM. Я имел в виду побег: stackoverflow.com/a/1091953/1498401 - person tinamou; 31.05.2017
comment
строковая формула = ‹Formula› = Nome1 \\ Cognome1 \ (id: \ Campo1 \\ ‹/Formula› + ‹FieldRefs› + ‹FieldRef Name = 'Nome1' /› + ‹FieldRef Name = 'Cognome1' /› + FieldRef Name = 'Campo1' / ›+ ‹/FieldRefs›; - person OuterSpace; 31.05.2017
comment
string schemaCalculatedField = ‹ID поля = '1F2ABCC0-D243-40F0-A18D-E0AEF7FE3EB6' Type = 'Calculated' Name = 'FullName' StaticName = 'FullName' DisplayName = 'Full Name' ResultType = 'Text' Required = 'TRUE' Только для чтения = 'ИСТИНА' ›+ формула +‹ / Поле ›; Поле fullNameField = clientContext.Web.GetListByTitle (PnP Custom List3) .Fields.AddFieldAsXml (schemaCalculatedField, true, AddFieldOptions.AddFieldInternalNameHint); clientContext.ExecuteQuery (); - person OuterSpace; 31.05.2017
comment
Я проверил ваше решение, но выдает ошибку, говоря, что я не могу использовать DTD ... - person OuterSpace; 05.06.2017