【问题标题】:Sharepoint calculated field formula syntaxSharepoint 计算字段公式语法
【发布时间】:2017-11-01 02:09:50
【问题描述】:

我必须以编程方式为列表中的计算字段设置公式。 该字段必须是其他两个字段的总和。您能否提供我必须在代码中插入的公式的语法?我找不到任何例子。 您能否也为我提供公式语法的参考,因为我还必须创建另一个计算字段,它是两个字符串字段的串联。 谢谢

【问题讨论】:

  • 你检查过我当前的答案吗?
  • 我在下面回复了

标签: sharepoint calculated-field


【解决方案1】:

计算字段公式 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 代码 reference1reference2 创建计算字段。正如您在下面看到的,您需要记住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();

实现的工作代码(cmets):

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();

【讨论】:

  • 感谢您的回答。我忘了告诉我需要用 CSOM 代码创建它们。我尝试了CSOM的例子,但它不起作用,你在xml中编码特殊字符是什么意思?
  • 用您的 CSOM 代码更新您的问题。我的意思是逃跑:stackoverflow.com/a/1091953/1498401
  • 字符串公式 = "=Nome1&\"\"&Cognome1&\"(id:\"&Campo1&\"\"" + "" + "" + "" + "" + "";
  • string schemaCalculatedField = " " + 公式 + " 字段 > ";字段 fullNameField = clientContext.Web.GetListByTitle("PnP 自定义 List3").Fields.AddFieldAsXml(schemaCalculatedField, true, AddFieldOptions.AddFieldInternalNameHint); clientContext.ExecuteQuery();
  • 我测试了您的解决方案,但它抛出一个错误,提示“我无法使用 DTD...”
猜你喜欢
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 2014-08-09
相关资源
最近更新 更多