微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Extjs - 在属性网格中显示嵌套对象

如何解决Extjs - 在属性网格中显示嵌套对象

我试图在我嵌套了 JSON 结构级别的 propertygrid显示我的 JSON。根据属性网格文档,唯一支持的类型是布尔值、字符串、日期、数字。所以我只能看到展平级别的信息,而不能看到嵌套的对象。

想知道 propertygrid 中是否有任何配置可以让我显示和编辑嵌套信息?或任何其他可用的组件代替 propertygrid

以下是示例配置和fiddle

Ext.create('Ext.grid.property.Grid',{
    title: 'Properties Grid',width: 300,renderTo: Ext.getBody(),source: {
        "allowBlank": "My Object","minValue": 1,"maxValue": 10,"itemDetails": {
            "name": "name 1","type": "Object"
        },"Description": "A test object"
    },sourceConfig: {
        allowBlank: {
            displayName: 'required'
        }

    }
});

解决方法

您可以使用可编辑的列树:

var store = Ext.create('Ext.data.TreeStore',{
    root: {
        expanded: true,children: [{
            text: "allowBlank",value: "My Object",leaf: true
        },{
            text: "minValue",value: "1",{
            text: "maxValue",value: 10,{
            text: "itemDetails",value: "",expanded: true,children: [{
                text: "name",value: "name 1",leaf: true
            },{
                text: "type",value: "Object",leaf: true
            }]
        },{
            text: "Description",value: "A test object",leaf: true
        }]
    }
});

Ext.create('Ext.tree.Panel',{
    title: 'Simple Tree',height: 200,store: store,rootVisible: false,plugins: {
        cellediting: {
            clicksToEdit: 2,listeners: {
                beforeedit: function (editor,context,eOpts) {
                    if (!context.record.isLeaf()) {
                        return false;
                    }
                    var column = context.column;
                    switch (typeof context.record.get('value')) {
                    case "string":
                        column.setEditor({
                            xtype: 'textfield'
                        });
                        return;
                    case "number":
                        column.setEditor({
                            xtype: 'numberfield'
                        });
                        return;
                    //...
                    //...
                    default:
                        column.setEditor({
                            xtype: 'textfield'
                        });
                        return;
                    }
                },}
        }
    },columns: [{
        xtype: 'treecolumn',text: 'Headers',dataIndex: 'text'
    },{
        text: 'Value',dataIndex: 'value',editor: {
            xtype: 'textfield'
        }
    }],renderTo: Ext.getBody()
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?