2016-12-07 4 views
0

У меня есть поле с типом поля валюты в моем списке SharePoint. Мне нужно отобразить все элементы в списке в виде таблицы. Но для валютного поля он просто отображает только цифры. Мне нужно значение, которое будет отображаться, пока оно отображается в списке SP. Как $ 432,98.00. Мой код такой, как показано нижеКак получить значение типа поля валюты SP с помощью Javascript

var list = web.get_lists().getByTitle(listName); 
    var caml = new SP.CamlQuery(); 
    caml.set_viewXml("<View><Query><OrderBy><FieldRef Name='" + columnName + "' Ascending='False'/></OrderBy></Query></View>"); 
    var ascItems = list.getItems(caml); 
    context.load(ascItems); 

//to get the value of each item based on field 
var fieldType = fieldNames[i].get_fieldTypeKind(); 
if (fieldType === SP.FieldType.currency) { 
       item = listItem.get_item(fieldNames[i].get_internalName()); 
      } 

здесь, fieldNames - это массив, в котором у меня есть все имена столбцов. товар возвращает значение как цифры, например 43298. Пожалуйста, помогите

+1

Я бы использовал regex –

+0

Но в JSlink мы могли бы использовать функцию get_item(), которая вернет значение поля, как оно есть в списке. Поэтому я ожидаю аналогичный путь в jsom без использования регулярного выражения. –

+0

Спасибо @FlashThunder. Наконец, я использовал regex для решения моей проблемы. if (fieldType === SP.FieldType.currency) { var currency = listItem.get_item (fieldNames [i] .get_internalName()); if (currency! = Null) { item = '$' + currency.toFixed (2) .replace (/ (\ d) (? = (\ D \ d \ d) + (?! \ D))/g, "$ 1"); } } –

ответ

0

Чтобы получить правильный формат валюты, вы можете включить и использовать поле FieldValuesAsText.

попробовать что-то вроде этого:

<script> 
ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js"); 
function retrieveListItems() { 
    var context = SP.ClientContext.get_current(); 
    var list = context.get_web().get_lists().getByTitle("YourListName"); 
    var items = list.getItems(new SP.CamlQuery()); 

    context.load(items, 'Include(FieldValuesAsText)'); 
    context.executeQueryAsync(function (sender, args) { 
     var enumerator = items.getEnumerator(); 

     while (enumerator.moveNext()) { 
      var item = enumerator.get_current(); 
      var fieldValuesAsText = item.get_fieldValuesAsText(); 
      var fieldValues = fieldValuesAsText.get_fieldValues(); 
      console.log(fieldValues.YourCurrencyFieldName); 
     } 
    }, function (sender, args) { 
     alert(args.get_message()); 
    }); 
} 
</script> 

Надеется, что это поможет!

+0

Когда я использую FieldValuesAsText, он вернет только значения. Но мне нужно полное свойство поля, как функция getfields(). Я хочу отображать каждое поле, пока оно отображается в списке, и делаю это в зависимости от типа поля для каждого поля. var fieldType = fieldNames [i] .get_fieldTypeKind(); –

Смежные вопросы