0

我正在使用 Grid 在modal窗口上显示数据。它有两列,1. 标签 2. TextField

我面临的问题是,每当我在文本字段中输入任何内容并从该文本字段中失去焦点(通过按 TAB 或单击其他位置)时,网格都会完全清除,我得到一个空白网格!

我知道这与与网格关联的 Store 的 autoSync 属性有关。所以我将它设置为 false autoSync: false。完成此操作后,数据将被保留并正常工作。

但是当我关闭此模式窗口并使用相同的商店数据重新打开它时,我得到一个空白屏幕!

以下是我的代码:

模型

Ext.define('Ext.ux.window.visualsqlquerybuilder.SQLAttributeValueModel', {
extend: 'Ext.data.Model',
fields: [
    {
        name: 'attribute',
        type: 'string'
    },
    {   name: 'attributeValue',
        type: 'string'
    }
]
});

店铺

var attrValueStore = Ext.create('Ext.data.ArrayStore', {
   autoSync: true, //tried setting it to false but got error as mentioned above
   model: 'Ext.ux.window.visualsqlquerybuilder.SQLAttributeValueModel'
});

网格

Ext.define('Ext.ux.window.visualsqlquerybuilder.SQLAttributeValueGrid', {
autoRender: true,
extend: 'Ext.grid.Panel',
alias: ['widget.attributevaluegrid'],
id: 'SQLAttributeValueGrid',
store: attrValueStore,
columnLines: true,
plugins: [Ext.create('Ext.grid.plugin.CellEditing', {
    clicksToEdit: 1
})],
columns: [        
    {                        /*Expression */
        xtype: 'gridcolumn',
        text: 'Attribute',
        sortable: false,
        menuDisabled: true,
        flex: 0.225,
        dataIndex: 'attribute'
    },
    {                           /*Attribute Values*/
        xtype: 'gridcolumn',
        editor: 'textfield',
        text: 'Values',
        flex: 0.225,
        dataIndex: 'attributeValue'
    }
],
initComponent: function () {
    this.callParent(arguments);
}
});

模态窗口

var attributeValueForm = Ext.create('Ext.window.Window', {
  title:'Missing Attribute Values',
  id: 'attributeValueForm',
  height:500,
  width:400,
  modal:true,
  renderTo: Ext.getBody(),
  closeAction: 'hide',
  items:[
   {
    xtype: 'attributevaluegrid',
    border: false,
    //height: 80,
    region: 'center',
    split: true
   }
  ],
  buttons: [
  {
    id: 'OKBtn',
    itemId: 'OKBtn',
    text: 'OK',
    handler: function () {
        Ext.getCmp('attributeValueForm').close();
    }
  },
  {
    text: 'Cancel',
    handler: function () {
        Ext.getCmp('attributeValueForm').close();
    }
   }
]
});

请帮忙。这让我发疯!

4

2 回答 2

0

如果您可以提供有关如何创建窗口本身的详细信息会很有帮助,因为它可能是问题的一部分。

造成这种情况的一个原因可能是您隐藏了窗口而不是关闭它,然后在重新打开时创建了一个新实例。这将导致您的 DOM 有两个 windows 实例,并且可能无法在第二个实例中正确同步数据。

有关如何创建实际窗口的更多详细信息将有助于阐明是否属于这种情况。

于 2013-05-08T11:20:19.863 回答
0

写完这篇文章后,我可能想把自己关进监狱。

真正的问题是我为不同的模式窗口创建了一个类似的网格,并且由于我复制了代码,我错过了更改新网格的 ID。

两个网格具有相同的 ID。

现在改变它,它现在工作正常。

谢谢你的帮助!

于 2013-05-09T06:05:03.100 回答