这些天在弄EXTJS这个东东,搞了好些天,似懂非懂,总的来说还是有些启发,现在把遇到的问题回忆回忆,总结出来.
第一个是问题,至今还没搞定,估计是目前extjs还没提供相应的解决方法(我用的是EXTJS2.3版本).这个就是tbar的问题,我们知道在extjs的panel里都可以有tbar和bbar,这是两个toolbar就是在panel上面或者下面有一排按钮(button),说实在这个我是比较喜欢的,把修改,保存,新增放在上面是非常好的选择,比单独把button定义在内容中好多了,我想说这个不足是,如果你有新增,修改,删除,保存,取消等等按钮的话,有些按钮是互斥的,就上面的按钮而然,一开始保存,取消都应该是灰色的,不可点的,只有点新增,修改后才能可点,但tbar好像现在做不到,我们可以从一个formpanel里得到toolbar,但这是工具条,我们的按钮是在这个工具条里的,但是我们从工具条得按钮却没有办法了,这个工具条并没有给你提供得到按钮的方法.这个有哪位高手可以改源码,加一个这样的方法可能会更好了一些.P话不说了.
再一个想说一下的,我弄了一个extjs跟struts2结合,这里一个问题弄了两夜,因为struts2是现学的,不是太懂,我在用extjs提交表单后,在struts2的action里总是得不到表单元素中的值,后台打印出来的是null,其实这里并没有什么技术含量,struts2里只要在action里配置表单元素的属性和get,set方法就可以了,我们就可以直接取值了.但是我总是弄不出来,在网找也没找到帮助,后来还是靠自己吧,于是把问题一个一个分解来找原因,后来发现我在前台的extjs里在处理表单提交时写了几句代码,问题就出在这里,我的想法是这样的,表单元素点保存后,提交给后台,那么这些元素就不能再编辑了,就是灰了,我设成disable,就是这个disable,
handler:function(){
f.getForm().submit({
method:'POST',
params:'',
success:function(){
Ext.Msg.alert("保存成功");
},
f.getForm().findField("funcname").disable();
f.getForm().findField("url").disable();
f.getForm().findField("funcdes").disable();
f.getForm().findField("isleaf").disable();
failure:function(){
Ext.Msg.alert("保存失败!");
}
});
这是原码,上面的要在后台处理成功后才能设成disable也就是要把那些代码放在success里.
handler:function(){
f.getForm().submit({
method:'POST',
params:'',
success:function(){
Ext.Msg.alert("保存成功");
f.getForm().findField("funcname").disable();
f.getForm().findField("url").disable();
f.getForm().findField("funcdes").disable();
f.getForm().findField("isleaf").disable();
},
failure:function(){
Ext.Msg.alert("保存失败!");
}
});
另一个问题是combo这个下拉框, 我们都知道下拉框有两个值的,一个是显示值,一个是实际值,combo提供了取显示值和实际的方法getRawValue(),和getValue();但这些是用在前台取值用的,我传到后台后,发现打印出来的值是显示值,我们一般都是要实际值的,原来extjs里面还有一个属性叫做hiddenName,如果不配的话我们在后台就是取显示值,这里给他一个名字不要跟combo 的id一样就可以了,action配一个跟他一样的属性,这样我们就取这个属性的值,这就是实际值了.
好了不说了,烧饭去,