2016-05-12 26 views
0

我有以下情形:的LightSwitch HTML - 根據字段的表內改變貨幣

我有一個名爲OrderLines表,其中包含的信息,如

  • 零件名稱
  • 原價
  • 貨幣

現在根據這些信息,我希望能夠更改表格視圖中的文本類似於貨幣。目前默認情況下,我可以確定1種貨幣,我稱之爲英鎊,因此當Lightswitch看到貨幣價值時,會增加英鎊。

我想改變這個!

在「編輯PostRender代碼」塊中,是否可以使用contentItem.dataBind函數來根據與特定項目關聯的貨幣字段更改此功能?

三江源的任何幫助,並希望這是可能的。(這些應該是在美元基礎上表中關聯到該行的貨幣文件)

enter image description here

,你可以在上面看到, OrderLine的是在表視圖 「訂單」 屏幕使用 enter image description here

代碼上:

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一樣,它始終顯示我設置的貨幣前綴,這就是爲什麼上面表格中有磅符號,因此我已將其更改爲decimal,以便看到它 enter image description here

如果我踏進代碼它不使用的代碼中找到的貨幣值:

enter image description here

+0

出於好奇,你使用錢類型爲您的清單價格,或雙? – BobbyJ

+0

我有一個SQL服務器後端,並已使用小數,我從來沒有想過嘗試其他類型,你認爲這會工作? – Crezzer7

+0

我不認爲使用內置的Money類型對於使用多種貨幣的應用程序來說非常適合。如果我沒有記錯,它會使用一些區域設置信息來顯示金額,但不一定是貨幣符號。 – BobbyJ

回答

1

我成立了一個類似的例子,並使用雙的,沒有運氣的作品ListPrice和貨幣的字符串。我相信這比使用內置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); 
      } 
     } 
    }); 
}; 

假設工程項目的更復雜的情況下,可以包含多個訂單行,以顯示訂單詳細信息查看OrderLines的項目的集合時,你需要改變的集合的行postRender碼模板。下面的代碼應該給你一個格式化值的起點:

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; 
       } 
      } 
     } 
    }); 
}; 
+0

我現在只是執行此操作,很快就會回覆您的回覆 – Crezzer7

+0

我擔心它無法正常工作,我在 – Crezzer7

+0

之上添加了結果儘管您的ListPrice在後端以雙精度存儲,但前端的某些內容會解釋您的作爲貨幣的雙倍價值(可能使用您的區域設置)。你用什麼樣的控制來顯示這些數據?我建議你設置我提到的本地LS屏幕的簡單例子,並確認它的工作原理,它只需要5分鐘。 – BobbyJ

相關問題