模型 ID = 0 时的 ExtJS 文本字段或组合框 defaultValue
Posted
技术标签:
【中文标题】模型 ID = 0 时的 ExtJS 文本字段或组合框 defaultValue【英文标题】:ExtJS textfield or combobox defaultValue when model has ID = 0 【发布时间】:2014-07-29 17:06:25 【问题描述】:在我的应用程序(ExtJS 4.2.1)中,我有一个用于创建新记录并将其保存到数据库的窗口。
当我创建窗口并显示它时,我会创建一个新记录并将其分配给窗口表单记录:
onNewPunchClick: function(button, e, options)
var me = this;
var win = Ext.create('App.view.attendance.punch.EditPunch'),
editForm = win.down('#editForm');
var newRec = Ext.create('App.model.attendance.DailyTime',
AttendanceId: 0,
EmployeeId: 0,
SensorId: 0,
IsManual: true,
IsActive: true
);
// load record to form
editForm.loadRecord(newRec);
win.show();
,
然后显示我的表单,但某些字段有“0”,如下所示:
所以我尝试了解决方法,但无法正常工作:
我曾尝试在模型中使用
convert
函数,当值为0 时返回' '
。我也尝试在模型中使用
defaultValue
,但没有成功。我也尝试设置
EmployeeId: ''
,创建模型时没有成功。
我应该缺少一些东西,非常感谢任何帮助。
【问题讨论】:
我已经有一段时间没有沉迷于 ExtJS 开发了,但是我们所有的表格都遇到了同样的问题,我们为其保留了下拉信息。如果您通过 id 链接它们,当它们尚未设置时,它们总是显示 0 而不是没有值。我最终在模型中将类型设置为字符串,这减轻了我的问题。也许这也对你有用?我的网络服务对返回的数据类型非常宽容,所以这不是一个大问题,但也许对你来说不是这样? 把我想出来的解决办法贴出来。 刚刚删除,它可以工作,但是当您尝试更改字段的值时,它不会反映在模型中。 【参考方案1】:效果很好的解决方案是:
在您的模型中设置您希望具有如下所需行为的属性:
name: 'EmployeeId', type: 'int', defaultValue: '', convert: null ,
然后在创建模型时将属性设置为未定义。
var newRecord = Ext.create('CustomModel',
EmployeeId: undefined
);
然后加载表单:
form.loadRecord(newRecord);
提交表单后:
form.updateRecord(newRecord);
【讨论】:
以上是关于模型 ID = 0 时的 ExtJS 文本字段或组合框 defaultValue的主要内容,如果未能解决你的问题,请参考以下文章