Почему я получаю "строку"; текст перед значением поля списка SharePoint, когда я его получу?

Я довольно новичок в **.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();
}

Я перебираю список SharePoint с именем etichettaCorrentList и для каждой строки извлекаю значение определенного поля.

Это работает, но проблема в том, что эта строка:

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

возвращает странное значение, которое содержит ожидаемое значение (то, которое содержится в моем списке), которому предшествует код, который не является частью значения выбранного поля, что-то вроде: string; # S01-INIZIATIVA EUROPA 1 TEST

Что это за строка?? Почему я это получаю? Как я могу правильно удалить или не получить эту строку; до желаемой информации? Что случилось? Что мне не хватает?

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]);
Другие вопросы по тегам