I have created value help

Ce que je veux, c'est ajouter une autre colonne de quantité L'ajouter aux colonnes n'est pas un problème car c'est du JSON total Mais le mettre en rangées est un peu problématique - parce que je tire les données du tableau - les produits - ils n'ont pas de quantité. Je veux créer ceci ici sur invitation Le fait est que le code est sous la forme de oTable.bindAggregation

voici mon aide-mémoire c'est mon code:

onValueHelpRequested: function() {
    var aCols = this.oColModel.getData().cols;
    this._oValueHelpDialog = sap.ui.xmlfragment("Ztest.Ztest.view.ValueHelpDialogBasic", this);
    this.getView().addDependent(this._oValueHelpDialog);

    this._oValueHelpDialog.getTableAsync().then(function (oTable) {
        oTable.setModel(window.orders);
        oTable.setModel(this.oColModel, "columns");

        if (oTable.bindRows) {
            oTable.bindAggregation("rows", "/Items");
        }

        if (oTable.bindItems) {
            oTable.bindAggregation("items", "/Items", function () {
                return new ColumnListItem({
                    cells: aCols.map(function (column) {
                        return new Label({ text: "{" + column.template + "}" });
                    })
                });
            });
        }
        this._oValueHelpDialog.update();
    }.bind(this));

    this._oValueHelpDialog.setTokens(this._oMultiInput.getTokens());
    this._oValueHelpDialog.open();
},

Ai-je un contrôle ici pour insérer une entrée pas à pas dans chaque ligne? Je veux dire une chose comme: what mind input step

0
sari 16 sept. 2020 à 23:22

2 réponses

Meilleure réponse

Car il Impossible de se connecter en second si if (oTable.bindItems) pereps car oTable.setModel (this.oColModel, "colonnes"); Je l'ai fait comme

`onValueHelpRequested: function() {
            var aCols = this.oColModel.getData().cols;
            this._oValueHelpDialog = sap.ui.xmlfragment("Ztest.Ztest.view.ValueHelpDialogBasic", this);
            this.getView().addDependent(this._oValueHelpDialog);

            this._oValueHelpDialog.getTableAsync().then(function (oTable) {
                oTable.setModel(window.orders);
                oTable.setModel(this.oColModel, "columns");
                 var oColumn = new sap.ui.table.Column({
                        label: new sap.m.Label({text: "Qty"}),
                        template: new sap.m.StepInput({value: "{Qty}"}),
                        width: "70px",
                        step:"1",
                        largerStep:"1",
                        max:"35",
                        min:"0",
                        stepMode:"Multiple" 
                });

                if (oTable.bindRows){
                    oTable.addColumn(oColumn);
                    oTable.bindAggregation("rows", "/Items");
                }

                /*if (oTable.bindItems) {
                        oTable.bindAggregation("items", "/Items", function () {
                        return new ColumnListItem({
                                 cells: aCols.map(function (column) {
                                 console.log(column);
                                    if (column.template=="Qty") {
                                        return new StepInput({ text: "{" + column.template + "}" });
                                    } else {
                                        return new Label({ text: "{" + column.template + "}" });
                                    }
                                })
                        });
                    });
                }*/
                this._oValueHelpDialog.update();
            }.bind(this));

            this._oValueHelpDialog.setTokens(this._oMultiInput.getTokens());
            this._oValueHelpDialog.open();
        },

"

0
sari 24 sept. 2020 à 15:17

Votre tableau se compose de lignes avec des libellés uniquement, car les cellules de votre ColumnListItem sont créées de cette façon. Si vous souhaitez ajouter autre chose, vous devez adapter votre fonction d'usine. Par exemple:

return new ColumnListItem({
    cells: aCols.map(function (column) {
        if (<condition>) {
            return new StepInput(...);
        } else {
            return new Label({ text: "{" + column.template + "}" });
        }
    })
});

1
Petar D. 20 sept. 2020 à 19:17