Joh*_*don 4 components extjs renderer
我需要显示数据的只读视图.我已选择DisplayField组件来执行此操作.我的问题是,我想要一种简单的方法来调用BasicForm.setValues(values)并在其中一个displayFields中自动正确呈现日期字符串.我没有找到任何能够为我做这件事的事情(例如渲染器功能),并且我将在调用之前手动格式化日期字符串setValues(values).有没有一些光滑的方式来做到这一点?
谢谢!
好的,如果你使用的是直接表单加载,那么你需要监听表单的BasicForm'actioncomplete'事件.当此事件触发时,处理程序将提供两个参数.第一个是BasicForm,第二个参数是Ext.form.Action对象.我们专门寻找Ext.form.Action.Load对象.从这里我们可以访问action的result.data对象,我们可以在此处理程序返回之前按下数据值,并将值加载到表单中.
function fmtDate(sf, rec) {
if ( rec[sf] ) {
var dt = new Date(); dt.setTime(rec[sf] * 1000); return dt.format('l j F Y');
}
};
myForm.getForm().on({
actioncomplete: function(form, action) {
if (action.type === 'load') {
if (action.result.success) {
var data = action.result.data;
data.someFormattedDate = fmtDate('myDateTS', data);
} else {
//handle an error here
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在您在表单中需要的是一个名为'someFormattedDate'的displayField,而Bob是你的叔叔(Aussie俚语对于它来说一切都很好).您还可以通过为myForm.getForm().load()调用提供'success:'函数来实现完全相同的功能.有关Ext.form.Action.Load的信息,请参阅ExtJS文档.干杯,t00bs.