[img]/upload/attachment/130645/63768267-9151-3478-a812-c9aa725c3d2b.jpg[/img]
如上图是一个 combo 组件,定义如下
[code="java"]{
fieldLabel: '性质',
id: 'kind',
name: 'kind',
xtype: 'combo',
mode: 'local',
triggerAction: 'all',
store: new Ext.data.SimpleStore({
fields: ['kind'],
data: [['商业'], ['其他']]
}),
displayField: 'kind',
valueField: 'kind',
emptyText: '商业',
editable: false,
lazyInit: false,
typeAhead: true,
selectOnFocus: true,
valueNotFoundText: '商业',
value: proj.kind
}[/code]
当然,为了取值,我加了很多不必要的属性。
我需要在浏览器端把 formPanle 中的元素取出来,组织成一个 XML 字符串。使用如下代码:
[code="java"]for (var i = 0, fld; fld = fm.findField(i); i++) {
alert(fld.id+" = '"+document.getElementById(fld.id).value+"|"+fld.getValue()+"'");
}[/code]
我希望如果用户不操作上面那个 combo,就使用默认值“商业”,但是使用 EXT 的方法 fld.getValue() 得到的是空值,而 js 方法 document.getElementById(fld.id).value 能够得到默认值“商业”。
请问正确的设计应该如何获取?
BTW:
proj.kind 是返回的对象,可能为空,而我的要求就是为空的时候就取默认值。
另外,我还有一个 datefield 组件,定义如下:
[code="java"]{
id: 'INDATE',
name: 'INDATE',
xtype: 'datefield',
format: 'Y-m-d',
value: new Date()
}[/code]
我用 EXT 方法 fld.getValue() 得到的是 Thu Jul 30 2009 00:00:00 GMT+0800,而 js 方法得到的才是我想要的 2009-07-30
请知道如何做的朋友不吝指教,谢谢~!
[b]问题补充:[/b]
[quote]fld.getValue() == null ? "商业":fld.getValue()[/quote]
不行,因为必须要设计得具有通用性。在那个接口方法中必须要处理很多业务的 form,而且,还必须要多未来的业务响应。
暂时就用 js 方法了,有问题再来看。不过继续期待更好的解决方法
[b]问题补充:[/b]
感谢大家!都或多或少有帮助,虽然分少,但不知道如何让大家平分,就选一个吧。
昨晚仔细看了 api,最终的方法如下,希望对后来者有所帮助,如果大家还有更好的方法,可以直接站内联系我,谢谢。
[code="java"]fm.getForm().setValues(proj);
var flds = fm.getForm().getValues();
for (key in flds) {
alert(key + " = '" + flds[key] + "'");
}[/code]