Sapui5 добавить новый столбец и значение в существующую таблицу

У меня стол. Однако мне нужно динамически добавлять новый столбец в существующую таблицу. Я успешно добавил новый заголовок столбца в свою таблицу, но мне не удалось добавить новые ячейки в текущий ColumnListItem в моей таблице.

Кто угодно может мне помочь.

Ниже приведен мой исходный код.

View.xml

<Table id="customerTable" width="auto" items="{path:'customerJSONData>/',   sorter: {path: 'CUSTOMER_NAME', descending: false} }" 
            growing="true" growingScrollToLoad="true">
            <columns>
                <Column id="nameColumn1">
                    <Text text="Customer ID" id="nameCustomerID"/>
                </Column>
                <Column id="nameColumn2">
                    <Text text="Customer Name" id="nameCustomerName"/>
                </Column>
                <Column id="nameColumn3">
                    <Text text="Address Line 1" id="nameAddress1" /> 
                </Column>
                <Column id="nameColumn4">
                    <Text text="Address Line 2" id="nameAddress2" />
                </Column>
                <Column id="nameColumn5">
                    <Text text="Private Number" id="namePrivateNumber"/>
                </Column>
            </columns>
            <items>
                <ColumnListItem>
                    <cells>
                        <ObjectIdentifier title="{customerJSONData>CUSTOMER_ID}"/>
                        <ObjectIdentifier title="{customerJSONData>CUSTOMER_NAME}"/>
                        <ObjectIdentifier title="{customerJSONData>ADDRESS_LINE_1}"/>
                        <ObjectIdentifier title="{customerJSONData>ADDRESS_LINE_2}"/>
                        <ObjectIdentifier title="{customerJSONData>PRIVATE_NUMBER}"/>
                    </cells>
                </ColumnListItem>
            </items>
        </Table>

Controller.js

extColumnHeader = "idExtHeader" + (i+1).toString();
var ExtColumnHeader = new sap.m.Column(extColumnHeader,{header: new sap.m.Label({text:customer_Ext[i].fieldlabel})});
this.getView().byId("customerTable").addColumn(ExtColumnHeader);

var colItems = this.getView().byId("customerTable").getColumns();
var ExtValue = new sap.m.Text("extColumnBodyId",{text:"ProductID"});
colItems.addCell(ExtValue); 

CustomerJSON

[
   {
        "CUSTOMER_ID" : "C001",
        "CUSTOMER_NAME": "Weng Fong Sdn Bhd",
        "ADDRESS_LINE_1": "Tai Rai Bong",
        "ADDRESS_LINE_2": "Hatyai",
        "PRIVATE_NUMBER" : "10001",
        "EXT_FLDS" : {
            "PRINTING_NUM": {
              "fieldvalue": 12,
              "fieldlabel": "Printing Number",
              "uictrl": "sap.m.Input"
            },
            "COUNTRY": {
              "fieldvalue": "Thailand",
              "fieldlabel": "Country",
              "uictrl": "sap.m.ComboBox"
            }
        }
]
0
0
3 076
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно добавить новый столбец со свойством привязки

addNewCol: function(oEvent) {
    var oTable = this.byId("customerTable");
    var oCol = new sap.m.Column({
       label: customer_Ext[i].fieldlabel,
       template: "EXT_FLDS/PRINTING_NUM/fieldvalue", //Updated PATH,  Update your binding property from customerJSONData model
    });
    oTable.addColumn(oCol);
}

Существующие данные модели customerJSONData

[
    {"CUSTOMER_ID":"200","CUSTOMER_NAME":"RF","ADDRESS_LINE_1":"CV","ADDRESS_LINE_2":"5988","PRIVATE_NUMBER":"YY"},
    {"CUSTOMER_ID":"80","CUSTOMER_NAME":"UG","ADDRESS_LINE_1":"RT","ADDRESS_LINE_2":"878","PRIVATE_NUMBER":"RF"},
    {"CUSTOMER_ID":"789","CUSTOMER_NAME":"GV","ADDRESS_LINE_1":"ED","ADDRESS_LINE_2":"8989","PRIVATE_NUMBER":"FGG"}
]

Для добавления новой колонки у модели должно быть еще одно свойство, например newCol.

[
   { "CUSTOMER_ID": "200", "CUSTOMER_NAME": "RF", "ADDRESS_LINE_1": "CV", "ADDRESS_LINE_2": "5988", "PRIVATE_NUMBER": "YY", "EXT_FLDS": { "PRINTING_NUM": { "fieldvalue": 11, "fieldlabel": "Printing Number", "uictrl": "sap.m.Input" }, "COUNTRY": { "fieldvalue": "Thailand", "fieldlabel": "Country", "uictrl": "sap.m.ComboBox" } } },
   { "CUSTOMER_ID": "80", "CUSTOMER_NAME": "UG", "ADDRESS_LINE_1": "RT", "ADDRESS_LINE_2": "878", "PRIVATE_NUMBER": "RF", "EXT_FLDS": { "PRINTING_NUM": { "fieldvalue": 11, "fieldlabel": "Printing Number", "uictrl": "sap.m.Input" }, "COUNTRY": { "fieldvalue": "Thailand", "fieldlabel": "Country", "uictrl": "sap.m.ComboBox" } } },
   { "CUSTOMER_ID": "789", "CUSTOMER_NAME": "GV", "ADDRESS_LINE_1": "ED", "ADDRESS_LINE_2": "8989", "PRIVATE_NUMBER": "FGG", "EXT_FLDS": { "PRINTING_NUM": { "fieldvalue": 11, "fieldlabel": "Printing Number", "uictrl": "sap.m.Input" }, "COUNTRY": { "fieldvalue": "Thailand", "fieldlabel": "Country", "uictrl": "sap.m.ComboBox" } } }
]

Note: Assuming NewProperty exist in the binding customerJSONData model.

Что я должен поставить для BindingProperty ??

Chan Yoong Hon 26.10.2018 08:00

BindingProperty должен существовать в модели customerJSONData. Помимо CUSTOMER_ID, CUSTOMER_NAME и т. д. В модели customerJSONData должно быть новое свойство для нового столбца. Используя это свойство, вам нужно только его привязать. Тогда только таблица автоматически позаботится о добавлении ячейки.

inizio 26.10.2018 08:05

Если вы поделитесь своей моделью customerJSONData, будет полезно проанализировать.

inizio 26.10.2018 08:51

Я обновил свой ответ для лучшего понимания. Я показал данные модели customerJSONData. Для добавления нового столбца вам необходимо иметь новое свойство в модели customerJSONData только со значением.

inizio 26.10.2018 09:03

Я поделился своими данными customerJSON

Chan Yoong Hon 26.10.2018 09:25

В ваших данных customerJSON новое значение столбца существует?

inizio 26.10.2018 09:44

Затем вам нужно обновить путь привязки. Я обновил свой ответ в addNewCol(). Если путь отличается, вы можете изменить его соответствующим образом.

inizio 26.10.2018 12:52

Позвольте нам продолжить обсуждение в чате.

Chan Yoong Hon 27.10.2018 10:22

Теперь это работает для меня. Просто замените его на шаблон: "customerJSON> EXT_FLDS / PRINTING_NUM / fieldvalue"

Chan Yoong Hon 29.10.2018 08:22

Отлично, рад, что помог :)

inizio 29.10.2018 08:39

Другие вопросы по теме