簡體   English   中英

在LiveCycle Designer中從數組填充表

[英]Populate table from array in LiveCycle Designer

我對Java還是比較陌生,並且已經開始了解一些用於在LiveCycle Designer ES4中創建表單的基本語言和功能。

我有4個復選框(例如“ check1”,check 2 ...)和4個預定義的數組(“ array1”,array2 ....)。 我在所有這些下面都有一個表,其中有3列(col1,col2,col3)。

我想做的是這樣的:

  • 當我檢查“ check1”時,我想用array1填充表的col2。
  • 然后為數組中的每個數據添加一個新行。
  • 我也想對其他復選框執行相同操作,並根據需要添加到表中。

我嘗試了很多不同的選擇,但似乎都無法正常工作。 在這一階段,我什至無法獲得一個數組來填充表,更不用說多個數組了。

這是我當前的代碼:(注釋掉的部分只是嘗試加入數組)

var array1 = new Array("one","two","Three","Four","Five");
var array2 = new Array("this","that", "and this");
var array3 = new Array("another one");
var array4 = new Array("Finally this");
var k = [];

//if(check1.rawValue == "Yes")

//{k = k.concat(array1)}

//if(check2.rawValue == "Yes")

//{k = k.concat(array2)}

for 
(i=0; i<array1.length; i++){
if (i>0) {Row01.InstanceManager.addInstance(1)}
xfa.resolveNode("Table.Row01["+i+"].col2").rawValue = array1[i];
}

任何幫助將不勝感激。

我測試了此解決方案,它有效:)
-數組每次都會以相同的順序累加,但是如果您希望以單擊復選框的順序來累加,它可能會變得更復雜,但是您並沒有特別要求,所以我希望足以讓您理解它能行得通:

在你開始前:

  • 確保您允許該行創建更多實例(底部的復選框) 在此處輸入圖片說明
  • 確保您知道復選框的“啟用”值是多少(在我的情況下為1) 在此處輸入圖片說明
  • 為您的代碼創建一個腳本對象(可選)
    在此處輸入圖片說明

在每個復選框內,單擊事件均寫入logic.populateCol2();

 Formular1.#subform[0].Kontrollkästchen1[0]::click - (JavaScript, client)
logic.populateCol2();

然后在logic Scriptobject中編寫以下代碼:

function populateCol2() {
    var array1 = ["one", "two", "Three", "Four", "Five"];
    var array2 = ["this", "that", "and this"];
    var array3 = ["another one"];
    var array4 = ["Finally this"];

    var cb1 = Kontrollkästchen1;
    var cb2 = xfa.resolveNode("Kontrollkästchen1[1]");
    var cb3 = xfa.resolveNode("Kontrollkästchen1[3]");
    var cb4 = xfa.resolveNode("Kontrollkästchen1[2]");

    //Put in all your checkboxes here and corresponding array
    var chbxs = [
        [cb1, array1],
        [cb2, array2],
        [cb3, array3],
        [cb4, array4]
    ];

    var allValues = [];
    for (var x = 0; x < chbxs.length; x++) {
        var currentCbx = chbxs[x][0];
        var currentArr = chbxs[x][1];
        //Or ==="Yes" in your case
        if (currentCbx.rawValue === 1) {
            allValues = allValues.concat(currentArr);
        }
    }

    //Set it back so it won't add up rows to infinity
    Table.Row01.instanceManager.setInstances(1);
    Table.Row01.col2.rawValue = "";

    for (var i = 0; i < allValues.length; i++) {
        if (i > 0) {
            Table.Row01.instanceManager.addInstance(true);
        }
        xfa.resolveNode("Table.Row01[" + i + "].col2").rawValue = allValues[i];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM