0

ウィンドウにデータを表示するためにグリッドを使用していmodalます。1. ラベル 2. TextField の 2 つの列があります。

私が直面している問題は、テキストフィールドに何かを入力し、そのテキストフィールドからフォーカスを失うたびに (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

これを書いた後、私はおそらく自分自身を投獄したいと思うでしょう。

実際の問題は、別のモーダル ウィンドウ用に同様のグリッドを作成したことと、コードをコピーしたため、新しいグリッドの ID を変更できなかったことです。

両方のグリッドの ID は同じでした。

現在は変更されており、問題なく動作しています。

ご協力いただきありがとうございます!

于 2013-05-09T06:05:03.100 に答える
0

問題の一部である可能性があるため、ウィンドウ自体の作成方法の詳細を提供していただけると助かります。

この原因の 1 つは、ウィンドウを閉じるのではなく非表示にし、再度開いたときに新しいインスタンスを作成することです。これにより、DOM に 2 つのウィンドウ インスタンスが作成され、2 番目のインスタンスでデータが正しく同期されない場合があります。

実際のウィンドウを作成する方法についてさらに詳しく説明すると、これが事実であるかどうかを明らかにするのに役立ちます。

于 2013-05-08T11:20:19.863 に答える