Получение значений элемента списка валют - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть список, который содержит два столбца типа валюты.Я хочу быть в состоянии прочитать значения из этого поля с десятичными знаками и включенным символом currecy.

Я пробовал три различных метода, но мне кажется, что я получаю только цифры, а не символ currecny.Также десятичные значения не отображаются должным образом.Столбцы, в которых используется десятичный тип: «InstallCosts» и «RentalCosts».

foreach (SPListItem item in listItemCollection)
{
try
{
string MPLS;
if ((bool)item["MPLS"])
MPLS = "Yes";
else
MPLS = "No";

//Conversion 1
double installCost;
bool convert1 = double.TryParse(item["InstallCosts"].ToString(), out installCost);

double rentalCost;
bool convert2 = double.TryParse(item["RentalCosts"].ToString(), out rentalCost);


//Conversion 2
string install = item["InstallCosts"].ToString();
double installConverted = double.Parse(install, NumberStyles.Currency,
CultureInfo.CurrentCulture.NumberFormat);

//Conversion 3
//string converThis = String.Format("[0:c}", (string)item["InstallCosts"]);


string results56 = (string)item["Title"] + " " + (string)item["DefinedFor"] + " " +
"<b>MPLS:</b> " + MPLS + "<br/>" + "<b>Max Downstream:</b> " + 
(string)item["MaxDownstream"] + "<br/>" + "Install Cost:" + converThis + "<br/>" 
+ "Rental Cost (p.a.):" + rentalCost + "<br/>";

AvailabilityCheckerResultsTwo.Controls.Add(new LiteralControl(results56));
}

В результате получается следующее:

Alpaca Грязный продукт ADSL для: Удаленный доступ сторонних производителей CCTVтестирование интерактивных моделей и веб-сайтов.MPLS: нет макс. Downstream: Стоимость установки: 50 Стоимость аренды (в год): 425,7

Результат для "Стоимость установки" должен быть: 50,00 фунтов стерлингов Результат для "Стоимость аренды" должен составлять: 425,70 фунтов стерлингов

Я застрял с этой проблемой в течение дня, был бы признателен за любую помощь, возможно, я что-то упускаю, но я не могу понять, что!

Большое спасибо,

1 Ответ

2 голосов
/ 19 декабря 2011

В .net номера не содержат ни валюты, ни какой-либо другой информации о форматировании. Таким образом, вы должны добавить символ валюты самостоятельно:

SPListItem item = ...;
double d = Convert.ToDouble(item["InstallCosts"]);
// will display the number in the current threads culture. In the US: $ <value>
string currency = d.ToString("C"); 
...