получение значения из таблицы sapui5 xml

#javascript #xml #sapui5

#javascript #xml #sapui5

Вопрос:

У меня проблема с получением таблицы значений sapui5 . Я хочу, чтобы при нажатии кнопки updatebutton я получал индекс выбранной строки и получал значение для каждого столбца.

Это мой код:

 updateButton : function(evt) {
   var oTable = this.getView().byId("tabelFaktor");
   var iIdx = oTable.getSelectedIndex();
},
  

Это мой XML-код:

 <Table id="tabelFaktor"
    selectionChange="handleSelectionChange"
    mode="MultiSelect"
    inset="false"
    items="{
    path: '/',
    sorter: {
    path: 'Name'
    }
    }">
    <columns>
        <Column
            width="12em"
            hAlign="Center">
            <Text text="TMT FAKTOR" />
        </Column>
        <Column
            minScreenWidth="Tablet"
            demandPopin="true"
            hAlign="Center">
            <Text text="TAHUN MI" />
        </Column>
        <Column
            minScreenWidth="Tablet"
            demandPopin="true"
            hAlign="Center">
            <Text text="KODE KELOMPOK" />
        </Column>
        <Column
            minScreenWidth="Tablet"
            demandPopin="true"
            hAlign="Center">
            <Text text="KODE PRODUK" />
        </Column>
        <Column
            hAlign="Center">
            <Text text="MASA IURAN" />
        </Column>
        <Column
            hAlign="Center">
            <Text text="NILAI" />
        </Column>                 
        <Column
            hAlign="Center">
            <Text text="NILAI1" />
        </Column>                 
        <Column
            hAlign="Center">
            <Text text="NILAI2" />
        </Column>
    </columns>

    <items>
        <ColumnListItem>
            <cells>
                <ObjectIdentifier
                    text="{tmtFaktor}"/>
                    <Text
                    text="{tahunMI}" />            
                    <Text
                    text="{kodeKelompok}" />  
                    <Text
                    text="{kodeProduk}" />  
                    <Text
                    text="{masaIuran}" />  
                    <Text
                    text="{nilai}" />                       
                    <Text
                    text="{nilai1}" />  
                    <Text
                        text="{nilai2}" />                                                                                                  
            </cells>
        </ColumnListItem>
    </items>
</Table>
  

Как решить эту проблему?
Спасибо.

С уважением, Бобби

Комментарии:

1. Я не вижу кнопки (должна ли она отображаться в каждой строке или только в заголовке таблицы? Кроме того, вы установили mode=MultiSelect так, что потенциально вы получите несколько строк, а не 1, что противоречит вашему требованию

Ответ №1:

Предполагая, что ваша таблица является таблицей sap.m., вы можете получить доступ к текущим выбранным значениям строк / ячеек следующим образом:

 var selectedItem = oTable.getSelectedItem();
var oCells = selectedItem.getCells();
    var keys = [];
    var values = [];
    for (var i = 0; i < oCells.length; i  ) {
        // key = field name in model
        keys.push(oCells[i].getBindingPath("text"));
        // value = field value in model
        values.push(oCells[i].getText());
    }
  

Я надеюсь, что это поможет.
С наилучшими пожеланиями, Себастьян

Комментарии:

1. Дорогой Себастьян,

2. Дорогой Себастьян, спасибо за твой ответ. Когда я пробую ваш код, я получаю значение последнего столбца в выбранной строке. Как получить все значения в каждой выбранной строке столбца? Спасибо. С уважением, Бобби

3. Дорогой Себастьян,

4. Дорогой Себастьян, спасибо тебе.. Я получаю все значения в каждом столбце для выбранной строки..

5. Привет, Бобби, я обновил фрагмент кода, чтобы ты мог получить все значения в массиве. Получен ли ответ на ваш вопрос? Бр, Себастьян

Ответ №2:

Я бы не советовал зацикливаться на содержимом ячейки; чтобы следовать принципам MVC, вы всегда должны извлекать данные из модели, а не из элемента управления пользовательского интерфейса.

В конечном итоге ваш код также станет намного более читабельным:

 var selectedRowdata = oTable.getSelectedContexts()[0].getObject();
  

(Примечание: Я предположил, что у вас есть только один выбор. Если у вас есть несколько вариантов выбора, не используйте [0] для получения первой (то есть только одной) строки, а выполняйте цикл по массиву, возвращаемому getSelectedContexts() )