2016-12-07 66 views
0

我在我的SharePoint列表中有一个货币字段类型的字段。我需要以列表的形式显示列表中的所有项目。但是对于货币领域,它只显示数字。我需要将值显示在SP列表中。像432,98.00美元。我的代码如下所示如何使用Javascript获取SP货币字段类型值

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

我会使用正则表达式 –

+0

但是在JSlink中,我们可以使用get_item()函数,它将返回列表中的字段值。所以我期待在jsom中使用类似的方式,而不使用正则表达式。 –

+0

谢谢@FlashThunder。最后,我用正则表达式来解决我的问题。 (fieldType === SP.FieldType.currency)var currency = listItem.get_item(fieldNames [i] .get_internalName());如果(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(); –