我对**.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测试
这个字符串是什么?我为什么要取回它?如何正确删除或不获取此字符串在所需信息之前?怎么了?我错过了什么?
使用此链接。
以下是您问题的答案。您的字段类型为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]);