【问题标题】:Why am I obtaining a "string;" text before the value of a SharePoint List field when I retrieve it?为什么我得到一个“字符串”;检索 SharePoint 列表字段值之前的文本?
【发布时间】:2019-05-13 16:44:11
【问题描述】:

我是 **.NET** 和 SharePoint 的新手,在处理 SharePoint 2013 项目时遇到以下问题。

进入我的代码:

for (int i = 0; i < eitchettaCorrenteList.Items.Count; i++)
{
    string valoreColonnaIniziativaInternalName = eitchettaCorrenteList.Fields[nomeColonna].InternalName;

    string valore = eitchettaCorrenteList.Items[i][valoreColonnaIniziativaInternalName].ToString();
}

我正在迭代名为 etichettaCorrentList 的 SharePoint 列表,并为每一行检索特定字段的值。

它可以工作,但问题是这一行:

string valore = eitchettaCorrenteList.Items[i][valoreColonnaIniziativaInternalName].ToString();

返回一个奇怪的值,其中包含预期值(包含在我的列表中),前面有一个不属于所选字段值的代码,例如:string;#S01-INIZIATIVA EUROPA 1测试

这个字符串;是什么?为什么我要找回它?如何在所需信息之前正确删除或不获取此 string;?怎么了?我错过了什么?

【问题讨论】:

  • 哪个数据类型是 eitchettaCorrenteList.Items[i][valoreColonnaIniziativaInternalName]?也许 ToString 函数也返回元数据信息
  • 不要使用ToString()。有许多种不同的字段类型,包括查找(同时存储 ID 和文本)、图片、多值文本字段和查找等。您编写代码的方式就是检索内部数据。
  • 你能说出这个值是什么类型的字段吗?您可以在列表设置的 SharePoint 列表中看到它。每个字段类型都可以转换为特定于 SharePoint .NET 类。这些类有自己的方法来正确获取值。如果您将使用这个正确的类来获得价值,那么您的问题可能会得到解决。
  • 它是一个简单连接 2 个文本字段的计算值。我该用什么方法?
  • String strPrice = priceField.GetFieldValueAsText(item["Retail_x0020_Price"]) 来源:docs.microsoft.com/en-us/previous-versions/office/developer/…

标签: c# .net sharepoint sharepoint-2013 sharepoint-list


【解决方案1】:

使用this 链接。

这里有您问题的答案。 您的字段类型是 SPFieldCalculated。 使用这样的代码:

var item = eitchettaCorrenteList.Items[i];
var field = eitchettaCorrenteList.Fields[nomeColonna];
string valoreColonnaIniziativaInternalName = field.InternalName;
if (field.Type.Equals(SPFieldType.Calculated)) {
}
    SPFieldCalculated cf = (SPFieldCalculated)field;
    string valore = cf.GetFieldValueForEdit(item[valoreColonnaIniziativaInternalName ]);
    // or 
    // string valore = cf.GetFieldValueAsText(item[valoreColonnaIniziativaInternalName ]);
}
else {
    string valore = item[valoreColonnaIniziativaInternalName].ToString();
}

或者这可能适用于所有情况:

var item = eitchettaCorrenteList.Items[i];
var field = eitchettaCorrenteList.Fields[nomeColonna];
var value = field.GetFieldValueAsText(item[field.InternalName]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多