2017-01-24 2 views
0

Я хочу установить фокус на поле ввода в строке в таблице. Как я могу прочитать ИД этой строки и установить фокус?Как установить фокус на поле ввода в 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 
    } 
} 

Благодаря

Edit:

<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> 

Это те столбцы моей таблицы в представлении: Я хочу, чтобы сосредоточить внимание на линии, где FIELD1 = s.Field1. Как установить идентификатор в специальной строке?

Edit 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(); 
    } 
}); 

или если ваш вход имеет идентификатор, скажем, "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

введите идентификатор входной строки, к которой вы хотите получить доступ, и вы можете найти ее в любой строке кода, используя метод '.byId (« ваш идентификатор здесь »). Сначала вы должны получить ссылку на текущее представление, возможно, используя 'this.getView()'. проверьте мое редактирование выше – Developer

+0

Спасибо, я отредактировал сообщение с более подробной информацией. Где я могу установить идентификатор в строке? – 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; 
    } 
} 
Смежные вопросы