2016-05-12 32 views
0

内のフィールドに応じて通貨を変更:LightSwitchのHTML - 私は次のシナリオを持っているテーブル

私は部品名

  • 価格
    • などの情報が含まれている注文ラインと呼ばれるテーブルを、持っていますこの情報から、今
    • 通貨

    は、私が変更できるようにしたいですテーブルビューのテキストは通貨に似ています。現在のところ、デフォルトでは、1通貨をGBPとして指定していますので、Lightswitchが通貨価値を見ている場合はGBPで追加します。

    私はこれを変更できるようにしたい!

    "PostRender Code Edit"ブロックのcontentItem.dataBind機能を使用して、特定のアイテムに関連付けられている通貨フィールドに基づいてこれを変更することはできますか?

    任意の助けをありがとう、うまくいけば、これは可能..です(これらはテーブル内の行に関連付けられている通貨ファイルに基づいて、ドルにする必要があります)

    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); 
          } 
         } 
        }); 
    }; 
    
    :オーダーラインテーブルが使用される「注文」画面 enter image description here

    コードのテーブルビューにあります

    LightswitchはListPriceを現時点で小数点として扱います。通貨として設定した場合と同様に、常に上の表にポンド記号が表示されているので、常にこれを小数点に変更していますダブルを

    enter image description here

    +0

    好奇心を払わずに、List PriceのMoneyタイプを使用していますか? – BobbyJ

    +0

    私はSQL Serverのバックエンドを持っていて、10進数を使用していました。他のタイプを試したことはありませんでしたが、これはうまくいくと思いますか? – Crezzer7

    +0

    私は内蔵のマネーの種類を使用して複数の通貨のアプリに最適だとは思わない。私が正しく覚えていれば、金額を表示するためにロケール情報を使用しますが、必ずしも通貨記号である必要はありません。 – BobbyJ

    答えて

    1

    私は同様の例を設定し、使用:私はコードにステップあれば、それはコードを使用して通貨の価値を見つけるdoesntの enter image description here

    :運と連携ListPrice、通貨の文字列です。私はこれが組み込みのMoneyタイプを使用するより安全なアプローチだと考えています。

    以下のコードは[表示]画面用です。[参照]画面で機能するようにわずかに調整できます。 ListPrice値の値にバインドして、適切な通貨記号を変更して設定します。一般的には、より一般的な関数で通貨のISOコードのシンボルを返すことをお勧めします。また、通貨が変更された場合にも同様のバインディングを設定することをお勧めします。注文ラインのプロジェクトのコレクションを表示したとき、あなたは、コレクションの行に対するpostRenderコードを変更する必要があります詳細オーダーラインを表示するには、複数のオーダーラインを含むことができ、プロジェクト項目のより複雑なケースを想定し

    myapp.ViewProjectOrder.ListPrice_postRender = function (element, contentItem) { 
        contentItem.dataBind("value", function (value) { 
         if (value) { 
          if (contentItem.screen.ProjectOrder.Currency == "GBP") { 
           $(element).text("£ " + value); 
          } 
         } 
        }); 
    }; 
    

    テンプレート。次のコードでは、値の書式設定の開始点を指定する必要があります。

    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

    私はうまく動作しません。iveは上記の結果を上に追加しました – Crezzer7

    +0

    ListPriceがバックエンドにdoubleとして保存されていますが、あなたのロケールを使用している可能性があります。このデータを表示するためにどのようなコントロールを使用していますか?ネイティブLS画面で説明したシンプルな例を設定し、それが動作することを確認することをお勧めします。わずか5分かかります。 – BobbyJ

    関連する問題