Мне нужно программно установить формулу для вычисляемого поля в списке. Это поле должно быть суммой двух других полей. Можете ли вы предоставить мне синтаксис формулы, которую я должен вставить в код? Я не могу найти ни одного примера. Можете ли вы предоставить мне ссылку на синтаксис формул, потому что мне также нужно создать другое вычисляемое поле, которое является объединением двух строковых полей. Спасибо
Синтаксис формулы вычисляемого поля Sharepoint
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& \" \" &LastName& \" (id: \" &EmployeeID& \" \"</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&" "&Cognome1&"(id:"&Campo1&")"</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
Спасибо за ваш ответ. Я забыл сказать, что мне нужно создать их с помощью кода CSOM. Я попробовал пример CSOM, но он не сработал. Что вы имеете в виду под кодированием специальных символов в xml?
- person OuterSpace; 31.05.2017
обновите свой вопрос своим кодом CSOM. Я имел в виду побег: stackoverflow.com/a/1091953/1498401
- person tinamou; 31.05.2017
строковая формула = ‹Formula› = Nome1 \\ Cognome1 \ (id: \ Campo1 \\ ‹/Formula› + ‹FieldRefs› + ‹FieldRef Name = 'Nome1' /› + ‹FieldRef Name = 'Cognome1' /› + FieldRef Name = 'Campo1' / ›+ ‹/FieldRefs›;
- person OuterSpace; 31.05.2017
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
Я проверил ваше решение, но выдает ошибку, говоря, что я не могу использовать DTD ...
- person OuterSpace; 05.06.2017