我有以下情况:
我有一个名为OrderLines的表,其中包含
等信息现在从这些信息中,我希望能够将表格视图中的文本更改为类似于货币。目前默认情况下,我可以确定1种货币,我将其称为GBP,因此当Lightswitch看到货币值时,它会加上GBP。
我希望能够改变这个!!
在“编辑PostRender代码”块中,是否可以使用contentItem.dataBind
函数根据与该特定项目关联的货币字段来更改此项?
谢谢你的任何帮助,希望这是可能的..(这些应该是美元,基于与表格中此行关联的货币文件)
使用的代码:
myapp.ViewProjectOrder.ListPrice_postRender = function (element, contentItem) {
contentItem.dataBind("value", function (value) {
if (value) {
if (contentItem.screen.OrderLines.Currency == "GBP") {
$(element).text("£ " + value);
}
else if (contentItem.screen.OrderLines.Currency == "CAD") {
$(element).text("$ " + value);
}
}
});
};
Lightswitch当前将ListPrice视为小数,就像我将其设置为Currency一样,它总是显示我设置的货币前缀,这就是为什么上面的表中有英镑符号,我已经将此更改为十进制以查看它这没有运气:
如果我进入代码,它不会使用代码找到货币的值:
答案 0 :(得分:2)
我设置了一个类似的例子,并为ListPrice使用了一个double,并为该货币使用了一个字符串。我相信这比使用内置的Money类型更安全。
以下代码适用于“查看”屏幕,可以稍微调整以在“浏览”屏幕上工作。绑定到ListPrice值的值,并设置相应的货币符号。一般来说,我建议使用更通用的功能返回货币的ISO代码的符号。您也可能希望在货币更改时设置类似的绑定。
myapp.ViewProjectOrder.ListPrice_postRender = function (element, contentItem) {
contentItem.dataBind("value", function (value) {
if (value) {
if ( contentItem.screen.ProjectOrder.Currency == "GBP" ) {
$(element).text("£ " + value);
}
}
});
};
假设一个可以包含多个OrderLine的Project项目更复杂的情况,要在查看Project的OrderLines集合时显示订单行详细信息,您需要更改集合的postRender代码&# 39; s行模板。以下代码应为您提供格式化值的起点:
myapp.ViewProject.rows_postRender = function (element, contentItem) {
contentItem.dataBind("value", function (value) {
if (value) {
var tags = element.children;
var searchText = contentItem.value.ListPrice;
for (var i = 0; i < tags.length; i++) {
if (tags[i].textContent == searchText) {
if (contentItem.value.Currency == "GBP") {
tags[i].textContent = "£ " + tags[i].textContent;
}
else if (contentItem.value.Currency == "USD") {
tags[i].textContent = "$ " + tags[i].textContent;
}
break;
}
}
}
});
};
答案 1 :(得分:1)
由于内置了globalize.js,因此您可以使用以下方式呈现任何货币:
Globalize.format(Globalize.parseInt(value), 'c0', 'en-gb');
c0代表具有0个十进制数字的货币。可以从数据库/其他字段获取En-gb-抱歉,GBP无法正常工作。
是的,无论您如何存储金额,似乎都需要parseInt / ParseFloat。
LightSwitch万岁!