2017-01-24 19 views
0

テーブルの行の入力フィールドにフォーカスを設定したいとします。この行のIDを読んでフォーカスを設定するにはどうすればよいですか?sap.ui.table.Tableの入力フィールドにフォーカスを設定する方法

for(var i = 0; i < rowCount; i++) { 

    var oEntry = this.getView().getModel("items").getProperty(
    oTable.getContextByIndex(i).sPath); 

    if (oEntry.Field1 === sField1){ 
     //Here I will set the focus in an Input field 
    } 
} 

おかげ

編集:

<columns> 
    <Column width="2rem" sortProperty="Field"> 
     <m:Label text="{i18n>Field}" /> 
     <template> 
      <m:CheckBox 
       selected="{ 
       path: 'items>Field', 
       type: 'sap.ui.model.type.String' 
       }" 
      editable="false" /> 
     </template> 
    </Column> 
    <Column width="6rem"> 
     <m:Label text="{i18n>Field1}" /> 
     <template> 
      <m:Text text="{items>Field1}" /> 
     </template> 
    </Column> 
    <Column width="6rem"> 
     <m:Label text="{i18n>Field2}" /> 
     <template> 
      <m:Input 
       value="{items>Field2}" /> 
     </template> 
    </Column> 

このビューでは、私のテーブルの列です:私はフィールド1 = s.Field1ライン、上のフォーカスを取得したいです。 IDを特別な行に設定するにはどうすればよいですか?

編集2.0:

XMLビュー:

<Column width="6rem"> 
    <m:Label text="{i18n>Field2}" /> 
    <template> 
     <m:Input 
      id="input2" value="{items>Field2}"/> 
    </template> 
</Column> 

コントローラー:

for(var i = 0; i < rowCount; i++) { 
    var oEntry = this.getView().getModel("items").getProperty(
           oTable.getContextByIndex(i).sPath); 
    if (oEntry.Field1 === sField1){ 
     this.getView().byId("input2").focus(); 

    } 
} 
this.getView().getModel("items").refresh(true); 

答えて

0

あなたは、そのIDによってビューを取得しようとし、その後にフォーカスを設定するfocus()機能を使用することができますそれ。

例えば、

var oInput = new sap.m.Input({id: "inputID"}) 
.addEventDelegate({ 
    onAfterRendering: function(){ 
     oInput.focus(); 
    } 
}); 

やあなたの入力はIDを持っている場合は、 "INPUT1" と言って、あなたはこの

this.getView().byId("input1").focus(); 

EDIT行うことができます。 を入力し、あなたがIDにする要素であると仮定し

<Column width="6rem"> 
    <m:Label text="{i18n>Field2}" /> 
    <template> 
     <m:Input 
      value="{items>Field2}" 
      id="input1" /> 
    </template> 
</Column> 
+0

ありがとうございますが、テーブルで正しい行を選択するにはどうすればよいですか? – Mario

+0

はアクセスしたい入力行にIDを与え、 '.byId(ここであなたのID") 'メソッドを使ってコードのどの行でもIDを見つけることができます。 'this.getView()'を使用して、現在のビューへの参照を取得する必要があります。上記の私の編集を確認してください – Developer

+0

ありがとう、私はいくつかの詳細と投稿を編集します。 IDをどこに設定できますか? – Mario

0

次のようなこともできます。

var oTable = this.getView().byId("idTable"); 
var aRows = oTable.getRows(); 
for (var i = 0; i < aRows.length; i++) { 
    if (aRows[i].getBindingContext().getObject().Field1 === sField1) { 
     var oCell = aRows[i].getCells()[2]; // select 3rd cell 
     oCell.focus(); // focus on the Input field 
     break; 
    } 
} 
関連する問題