0

デフォルトのテキストを含むコンボボックスウィジェットを含むwidgetColumnを持つtreePanelがあります。私の要件は、デフォルトのテキストを選択すると、1 つの新しいレコードがストアに挿入され、データベースにも保存されることです。

{
    text: 'TC',
    dataIndex: 'scrTC',
    xtype: 'widgetcolumn',
    widget: {
        xtype: 'combo',
        store: 'TCStore',
        valueField: 'id',
        displayField: 'name',
        matchFieldWidth: false,
        listeners: {
          select: 'selectDefault'
        }
    }
}

コントローラーの方法:

selectDefault: function(combo){
  loadData(combo, id, name); //there is a logic to get id & name, then pass it to loadData method
}

loadData: function(combo, id, name){
   var store = combo.getStore();
  store.insert(0,{id: id, name: name});
  store.sync();
  combo.setValue(id);
}

問題は、最初にデフォルトのテキストを選択したとき、ストア同期メソッドはデータベースにデータを挿入していませんが、コンボには新しい値が表示され、新しい値も保存されます(デバッガーを使用して表示されます)。もう一度選択すると、データがデータベースに挿入されます。

私はコードをデバッグしました。実行フローは正しいです。唯一のことは、同期が最初のインスタンスでデータを挿入するためにバックエンドを呼び出していないことですが、2 回目は機能します。誰か助けてくれませんか。

4

2 に答える 2