如何在sapui5 m.table中获取JSON作为函数参数? [英] How can I get JSON as function Parameter in sapui5 m.table?

查看:239
本文介绍了如何在sapui5 m.table中获取JSON作为函数参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在动态表中创建动态comboboxmultiInput.您可以在我期望的查看屏幕下方以及自己的代码下看到.

I have tried to create dynamic combobox or multiInput in dynamic table. You can see below my the view screen that I expect and my own code.

onCreateTable: function () {
        var summaryDetailData = {
            "subvariants": [{
                "kontrolNesnesiTanim": "test 1 Tanım",
                "kontrolNesnesiBelirtim": "test 1 Belirtim",
                "type": "comboBox",
                "kontrolSonucu": {
                    "test0": "test00",
                    "test1": "test10",
                    "test2": "test20"
                },
                "kontrolEdilecek": 20,
                "kontrolEdilen": 0,
                "icon": "sap-icon://accept"
            }, {
                "kontrolNesnesiTanim": "test 2 Tanım",
                "kontrolNesnesiBelirtim": "test 2 Belirtim",
                "type": "input",
                "kontrolSonucu": {
                    "test0": "test00",
                    "test1": "test10",
                    "test2": "test20",
                    "test3": "test30"
                },
                "kontrolEdilecek": 10,
                "kontrolEdilen": 0,
                "icon": "sap-icon://decline"
            } ]
        };

        var oTable = new sap.m.Table("idRandomDataTable", {
            headerToolbar: new sap.m.Toolbar({
                content: [new sap.m.Label({
                    text: ""
                })]
            }),
            columns: [new sap.m.Column({
                width: "2em",
                header: new sap.m.Label({
                    text: "Kontrol Nesnesi"
                })
            }), new sap.m.Column({
                width: "2em",
                header: new sap.m.Label({
                    text: "Kontrol Sonucu"
                })
            }), new sap.m.Column({
                width: "2em",
                header: new sap.m.Label({
                    text: "Kontrol Edilecek"
                })
            })]
        });
        this.getView().byId("SimpleFormChange480_TrialSonuc").addContent(oTable);
        oTable.bindItems("/subvariants", new sap.m.ColumnListItem({
            cells: [new sap.m.ObjectIdentifier({
                    title: "{kontrolNesnesiTanim}",
                    "titleActive": true,
                    text: "{kontrolNesnesiBelirtim}"
                 }),
                 this.kontrolSonucu("{type}"), 
                 new sap.m.Input({
                    value: "{kontrolEdilen}"
                })
            ]
        }));

        oTable.setModel(new sap.ui.model.json.JSONModel(summaryDetailData));
    },

    kontrolSonucu: function (type) {
        if (type === "input") {
            return new sap.m.MultiInput({
                showValueHelp: false
            });
        } else {
            return new sap.m.ComboBox({
                items: {
                    path: "kontrolSonucu/",
                    template: new sap.ui.core.Item({
                        key: "{}",
                        change: "onChange",
                        text: "{}"
                    })
                }
            });
        }
    }

如何获取JSON作为函数参数?

How can I get JSON as function Parameter?

我也想使用sap.m.table库而不是sap.ui.table

期待您的回复.

推荐答案

您可以使用 工厂功能

You can achieve it using the factory function

onCreateTable: function () {
        var summaryDetailData = {
            "subvariants": [{
                "kontrolNesnesiTanim": "test 1 Tanım",
                "kontrolNesnesiBelirtim": "test 1 Belirtim",
                "type": "comboBox",
                "kontrolSonucu": {
                    "test0": "test00",
                    "test1": "test10",
                    "test2": "test20"
                },
                "kontrolEdilecek": 20,
                "kontrolEdilen": 0,
                "icon": "sap-icon://accept"
            }, {
                "kontrolNesnesiTanim": "test 2 Tanım",
                "kontrolNesnesiBelirtim": "test 2 Belirtim",
                "type": "input",
                "kontrolSonucu": {
                    "test0": "test00",
                    "test1": "test10",
                    "test2": "test20",
                    "test3": "test30"
                },
                "kontrolEdilecek": 10,
                "kontrolEdilen": 0,
                "icon": "sap-icon://decline"
            } ]
        };

        var oTable = new sap.m.Table({
            headerToolbar: new sap.m.Toolbar({
                content: [new sap.m.Label({
                    text: ""
                })]
            }),
            columns: [new sap.m.Column({
                width: "2em",
                header: new sap.m.Label({
                    text: "Kontrol Nesnesi"
                })
            }), new sap.m.Column({
                width: "2em",
                header: new sap.m.Label({
                    text: "Kontrol Sonucu"
                })
            }), new sap.m.Column({
                width: "2em",
                header: new sap.m.Label({
                    text: "Kontrol Edilecek"
                })
            })]
        });
        sap.ui.getCore().byId("tableWrapper").addItem(oTable); //Comment this code and uncomment the below code for table rendering
        //this.getView().byId("SimpleFormChange480_TrialSonuc").addContent(oTable);

        oTable.bindItems({
            path: "/subvariants",
            factory: this.populateItems.bind(this) //factory function
        });
        oTable.setModel(new sap.ui.model.json.JSONModel(summaryDetailData));
    },
    /* Factory function */
    populateItems: function(sId, oContext) { 
        var oInput = null;
        switch(oContext.getObject().type) {
            case "comboBox":
                oInput = new sap.m.ComboBox({ });
                break;
            case "input":
                oInput = new sap.m.MultiInput({ });
                break;
        }       
        var oRow = new sap.m.ColumnListItem(sId, {
            type: "Active",
            cells: [
               new sap.m.Text({ text: "{kontrolNesnesiTanim}" }),
               new sap.m.Text({ text: "{kontrolNesnesiBelirtim}" }),
               oInput
            ]
        });
        return oRow;
    },

这篇关于如何在sapui5 m.table中获取JSON作为函数参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆