아코디언 레이아웃으로 나뉘어 진 두 개의 그리드가 있습니다. 그것들은 기본적으로 같은 종류의 데이터를 보여주기 때문에 그룹화 된 그리드가 트릭을 수행해야하지만,이 방법은 실제로 좋게 보이고 지금까지는 잘 작동합니다.Extjs 모델 저장 후 그리드가 비게됩니다.
그리드 왼쪽에는 그리드 레코드를 편집하는 데 사용되는 양식 패널이 있는데 그리드의 레코드를 클릭하면 해당 데이터가 양식에 표시됩니다. 데이터를 편집 할 수 있지만 'model '.save() 액션을 트리거하는 저장 버튼을 클릭하면 관련 그리드 행이 공백으로 표시되고 더티 플래그가 표시됩니다. 모델을 확인한 결과 'data'속성에 데이터가 없지만 ID는 'modified'속성에 있습니다.
빨간색 더티 플래그는 데이터가 백엔드에서 지속되지 않는다는 것을 의미하지만이 경우는 그렇습니다. 요청은 200 상태 코드와 성공 (true)으로 반환됩니다.
컨트롤러에서 된 OnSave있어서
onSave : function() {
// Get reference to the form
var stepForm = this.getStepForm();
this.activeRecord.set(stepForm.getForm().getValues());
this.activeRecord.save();
console.log(this.activeRecord);
}
단계 가기 :
Ext.define('Bedrijfsplan.store.Steps', {
extend : 'Ext.data.Store',
require : 'Bedrijfsplan.model.Step',
model : 'Bedrijfsplan.model.Step',
autoSync : true,
proxy : {
type : 'rest',
url : 'steps',
reader : {
type : 'json',
root : 'steps'
},
writer : {
type : 'json',
writeAllFields : false,
root : 'steps'
}
}
});
단계 초상권
Ext.define('Bedrijfsplan.model.Step', {
extend : 'Ext.data.Model',
fields : [ 'id', 'section_id', 'title', 'information', 'content', 'feedback' ],
proxy : {
type : 'rest',
url : 'steps',
successProperty : 'success'
}
});
단계 그리드
Ext.define('Bedrijfsplan.view.step.Grid', {
extend : 'Ext.grid.Panel',
alias : 'widget.stepsgrid',
hideHeaders : true,
border : false,
columns : [ {
header : 'Titel',
dataIndex : 'title',
flex : 1
} ]
});
검색 및 시도에 몇 시간을 소비하지만 해결책을 찾지 못했습니다. 이 문제에 어떤 도움을 주시면 감사하겠습니다 :)
이
감사합니다 ,이게 내 문제를 해결 해줄거야! 그러나 한 가지 문제는 상점 동기화가 백엔드에 저장되지 않은 빈 레코드를 만드는 경우입니까? – Jacob
[Data Package Guide] (http://docs.sencha.com/ext-js/4-0/#!/guide/data)에서 모델 유효성 검사에 대한 내용을 읽으십시오. 유효성 검사를 통과하지 못한 모델은 유효하지 않습니다. .sync()를 호출하면 백엔드로 전송됩니다.모델의 유효성 검사기를 설정하여 저장하기에 충분할 때까지 모델이 서버로 전송되지 않도록하십시오. –
나는 조금 더 분명 했어야했다. 모델은 서버에 저장되지만 저장할 때 저장소는 아무 것도없는 새로운 빈 레코드를 만듭니다. 예를 들어 저장소에는 2 개의 레코드가 있지만 서버에 하나를 업데이트 한 후 갑자기 3이됩니다. 실제로 이상한 동작입니다. 지금까지 유효성 검사를 사용하지 않았습니다. – Jacob