2016-08-31 34 views
0

sap.ui.table.Table我在一列中有輸入字段。它將從後端獲取將近300條記錄的數據並綁定到其他列。如何從sap.ui.table.Table的輸入中獲取值?

用戶手動輸入輸入字段。此外,當他點擊提交按鈕時,我必須將所有輸入值作爲數組。請提出建議。

回答

2

可以使用數據表的綁定,作爲Table控制調用getRows()訪問的每一行的Input領域在這種情況下,也不會幫助做到這一點;它只返回只有當前可見行,你有大約300條記錄訪問。

這裏是解決方案:

  1. 獲取JSONModel從後端的所有數據。
  2. 向模型數據中的每個項目添加一個屬性說inputValue迭代它。
  3. 將此模型綁定到表並使用inputValue表的模板中的屬性綁定包含Input字段的列。

由於JSONModel支持雙向綁定,因此用戶在Input字段中輸入的所有值均可在您的模型中使用。

然後,最後遍歷模型的數據得到inputValue爲每一行。

在行動上面的步驟:

步驟1和2:

setModelForTable: function() { 
    var oModel = sap.ui.model.json.JSONModel(<URLToLoadJSON>); 
    var length = oModel.getData().results.length; 

    for (var i = 0; i < length; i++) { 
     var path = "/results/" + i + "/inputValue"; 
     oModel.setProperty(path, ""); 
    } 
} 

第3步:

現在,您有inputValue將屬性模型數據的所有項目,在桌子上設置模型;這將顯示最初列中的所有Input字段爲空,並將在用戶修改它時更新相應的模型條目。

<t:Column> 
    <t:label> 
     <Text text="User Input" /> 
    </t:label> 
    <t:template> 
     <Input value="{inputValue}" /> 
    </t:template> 
</t:Column> 

最後,獲取數組中的所有輸入值。

var length = oModel.getData().results.length; 
var aInputvalues = [] 
for (var i = 0; i < length; i++) { 
    var path = "/results/" + i + "/inputValue"; 
    aInputvalues.push(oModel.getProperty(path)); 
} 
+0

嗨dopedev,感謝您的建議。你能詳細解釋一下嗎?請 – user6757698

+0

好的,給我點時間吧! – Dopedev

+0

謝謝dopedev。我正在使用sap.m.Input – user6757698

1

我有這樣的情況有點類似,我用下面的方法做了。如果你真的不需要沒有改變的記錄,它將起作用。

  1. 具有可變存儲[的更改的記錄]
  2. 附加變化到輸入字段
  3. 上變化推改變記錄到可變

    var source = event.getSource(); 
    source.getModel().getProperty(source.getBindingContext().getPath()); 
    

或的值輸入字段。

event.getSource().getValue(); 

如果你有一個記錄ID,你可以推這個ID和輸入值。 4.關於提交迭代通過[]