ExtJS PropertyGrid - 动态设置源

时间:2009-07-10 02:28:13

标签: javascript extjs propertygrid

我正在研究一个简单的PropertyGrid。如果我在设计时使用某个json对象设置source属性,它将正确显示。但是当我尝试动态设置源数据时,它不会显示数据。

这是我的代码:

ConceptPropertiesPanel = function() {

    this.source = {   ***// if i set source this way, it will work***

    "(name)": "My Object",
    "Created": new Date(Date.parse('10/15/2006')),  
    "Available": false,  
    "Version": .01,     
    "Description": "A test object"
};

ConceptPropertiesPanel.superclass.constructor.call(this, {
    id: 'concetp-properties',
    region: 'east',
    title: 'Concept Properties',
    autoScroll: true,
    margins: '0 5 0 0',
    split: true,
    width: 250,
    minSize: 250,
    maxSize: 400,
    collapsible: true,
    source: {}
})
};


Ext.extend(ConceptPropertiesPanel, Ext.grid.PropertyGrid, {

setSourceData: function(data) { **//I want to set source when the below method is called, but not working**
    this.setSource({
        "(name)": "My Object",
        "Created": new Date(Date.parse('10/15/2006')),  
        "Available": false,  
        "Version": .01,     
        "Description": "A test object"
    });
}

});

这就是我调用'setSourceData'函数的方式。

var conceptPropertiesPanel = new ConceptPropertiesPanel();
conceptPropertiesPanel.setSourceData(data);

有人能告诉我代码中的问题在哪里吗?

2 个答案:

答案 0 :(得分:2)

Here是您的演示代码。它按预期工作。您可能想要在调用conceptPropertiesPanel.setSourceData(data);时检查是否存在任何JS错误,否则它应该工作!

答案 1 :(得分:0)

这里只是猜测,但是在对象已经初始化之后会设置Source,这需要您找到对象的更新update()doLayout()以更新数据的表示

另一个选项是在原始函数调用中进行配置。类似的东西:

ConceptPropertiesPanel = function(config) {

this.source = config || {   ***// if i set source this way, it will work***

    "(name)": "My Object",
    "Created": new Date(Date.parse('10/15/2006')),  
    "Available": false,  
    "Version": .01,     
    "Description": "A test object"
};