2016-04-27 6 views
0

私は2つのフォーム(グリッドとフィールドを持つフォーム)を持っています。ExtJs loadRecordメソッドを説明してください

ステップによって、私の質問のステップ:

  • を私はコントローラにloadRecord法によりcurrentDateFieldしたフォームを、編集する行の負荷からすべての日付グリッドの行を選択します。
  • 私はフィールドのIDが 'currentDateField'の既定値(new Date())を持っています
  • loadRecordメソッドが呼び出されたとき、このフィールドは値を変更しますが、このフィールドを常にデフォルト値新しいDate())

だから私の質問は以下のとおりです。

  1. どうloadRecordは動作し、それが編集フォームのフィールド値をどのように変化するかでしょうか?
  2. loadRecordメソッドを使用しても 'currentDateField'を常にデフォルト値にすることはできますか?

まず:

Ext.define('MVC.view.NotesGrid', { 
extend: 'Ext.grid.Panel', 
xtype: 'notes', 

title: 'Note-list', 

store: 'Notes', 

columns: [ 
    { 
     text: 'Name', 
     dataIndex: 'name', 
     flex: 1 
    }, 
    { 
     text: 'Creation Date', 
     xtype: 'datecolumn', 
     format: 'd-m-Y', 
     dataIndex: 'createDate', 
     flex: 1 
    },{ 
     text: 'Last Modified', 
     xtype: 'datecolumn', 
     format: 'd-m-Y', 
     dataIndex: 'modifiedDate', 
     flex:1 
    }, { 
     text: 'Text', 
     dataIndex: 'noteText', 
     flex: 3 
    } 
] 
}); 

第二:

GridController:

Ext.define('MVC.controller.Notes', { 
extend : 'Ext.app.Controller', 

init: function() { 
    this.control({ 
     'notes': { 
      select : this.onGridSelect 
     } 
    }); 
}, 

onGridSelect : function(grid, record, index, eOpts) { 
    // grab a reference to the Detail view... 
    // we could have used a controller "ref", but those can also be problematic 
    var detailView = Ext.ComponentQuery.query('edit')[0]; 

    //set the form record manually 
    detailView.loadRecord(record); 
} 
}); 

モデル:

Ext.define('MVC.model.Note', { 
extend : 'Ext.data.Model', 

fields : [ 
    { 
     name : 'name', 
     type : 'string' 
    }, 
    { 
     name : 'createDate', 
     type : 'date' 
    }, 
    { 
     name : 'modifiedDate', 
     type : 'date' 
    }, 
    { 
     name : 'noteText', 
     type : 'string' 
    } 
] 
}); 

ストア:

Ext.define('MVC.store.Notes', { 
extend : 'Ext.data.Store', 

requires : [ 
    'MVC.model.Note' 
], 

storeId : 'Notes', 
model : 'MVC.model.Note', 

data : [ 
    { 
     'name' : 'Lisa', 
     'createDate' : '10-23-1234', 
     'modifiedDate' : '04-21-2016', 
     'noteText' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam posuere odio leo, at mollis libero porta ut. Etiam mauris ipsum, iaculis a imperdiet sit amet, bibendum id urna. Proin tempus lectus nisl, a tristique est tempor quis. Etiam interdum urna dolor, non gravida nulla laoreet a. Donec id velit metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eu purus sed nisl commodo malesuada et ut velit. Quisque ut lorem magna. Nulla eget odio est. Sed ultrices turpis quam. Aliquam quis sollicitudin dolor.' 
    }, 
    { 
     'name' : 'Bart', 
     'createDate' : '10-24-1234', 
     'modifiedDate' : '04-3-2016', 
     'noteText' : 't, bibendum id urna. Proin tempus lectus nisl, non gicitudin dolor.' 
    }, 
    { 
     'name' : 'Homer', 
     'createDate' : '10-25-1234', 
     'modifiedDate' : '12-13-2416', 
     'noteText' : 'qwerty' 
    }, 
    { 
     'name' : 'Marge', 
     'createDate' : '10-26-1234', 
     'modifiedDate' : '04-21-2016', 
     'noteText' : 'qwerty123123' 
    } 
] 
}); 

答えて

1

- どのようにloadRecordが動作し、どのように編集 フォームのフィールドの値を変更しますか?

loadRecord方法は、あなたがあなたのケースではdocs

で読むことができるよう、あなたの記録が一致属性、レコードがフォームのコンポーネントでのitemIdまたは名前と一致する属性フォームでレコードデータを置きますnameプロパティを使用します。

- loadRecordメソッドを使用しても、 'currentDateField'を常にデフォルト値にすることはできますか?私にとって

2種類の溶液:

  1. 変更name:modifiedDateを持っている日付フィールドの名前。私はあなたがその特定の名前を送信したいフォームを送信すると思うので、良いものではありません。
  2. dateフィールドのchangeイベントを聞き、常に値を新しいDate()に設定します。
関連する問題