radio本来没有双击事件,我给加了个双击事件,用户双击,就可以把radio变为哪个item都没选。可是如果radio没选的话,对应的属性就不会传到后台去。这样即使前台什么都没选,但后台仍然改不了那个属性的值,有什么办法可以解决吗?
我就感觉后台很容易!好了,咱俩像聊天一样的,一问一答。。结账收分了!
一般的单选按钮差不多都会要求客户选择一个的。
再说你这个,你可以在后台判断,如果接收不到值,就是null,那就代表用户没有选择,就把这个属性值赋值成null,这样不就改变了吗。你用户没选我就认为没选,就把属性值置为null。
哦,你想加个双击事件?继承实现的,就是你加了双击事件后所有页面上的radio都有双击事件了是吗?
还有你这“我给加了个双击事件,用户双击,就可以把radio变为哪个item都没选。”我没看太明白!
那就这样你后台就获取不到值了啊!这还不就是回到你后台获取不到值,那你后台目前的逻辑是获取不到值不做做处理是吧?所以用户会看到,明明我都没选,怎么还有值呢!是这样的吧?
那就是现在你想用户不选就实现不选的效果,就是后台清空值,选了后台就保存用户选的那个值!那这样你还得后台做处理的啊,因为你前台没传来值。要么你就传一个在这些radio之外的值,也就是不选的时候的默认值,这样数据库里虽然存了,但是前台展示的时候没有一个radio被选中的,这样也符合客户的要求!
你不实现了双击事件吗?你在这个时候能把单选狂清空,那一样能设定一个默认值的。
其实可以采用多个radio的方式,不过这个多与的radio是看不见的,当双击其他radio的时候就默认选中这一个多于的radio,就不就实现了默认值了吗!
我看你这选中不选中怎么都是item.setValue(false); //所有item都设置为不选中
setValue是赋值的。应该用checked属性吧。还有newRadio初始状态的hidden 是true。你没有配置,应该隐藏你的newRadio
不是的,你理解错了,看API
setValue( Mixed value )
设置元素值并加以验证。如果想跃过验证直接设值则请看setRawValu...
设置元素值并加以验证。如果想跃过验证直接设值则请看setRawValue。Sets a data value into the field and validates it. To set the value directly without validation see setRawValue.
参数项:
value : Mixed
要设置的值 The value to set
返回值:
void
是设值的意思,checked=true才是选中
嗯,现在你改了后清空其他的单选按钮还能实现不?能实现的话就使用fireBug看看你新增的newRadio是不是有了,有了话看看他的name和vlue各是多少就好办了。!
name和原有的radio是一样的,inputValue为0,checked也是true。
等等,我想问的是展示到页面上原始的,radio对象到页面上应该是一个
这样的形势的,我想问的是这里面的那么和value的值,而不是你说的inputValue..
我知道你说的那个,你我都不是已经明白了那些都没有问题吗。那我就想让你看看你这些带展现之后是怎么样的,就是看看html代码。。
这是我在官网上看的一个radio的列子,他变成html后就是上面的结果。我也想让你看看你的html代码是否正确!
哦,就是你添加的那个没有添加上,所以后台也不会改变!是不是要先渲染,你看看源代码里是怎么添加radio的,我这里没有源代码!
你这双击的时候添加不上去,还有一种折中的方法,不是双击的时候添加radio,而是在渲染的时候,就是定义RadioGroup的时候在它的items里就多增加一个Radio,给其默认值0,默认不选中,隐藏。这样你的自定义双击事件的
var newRadio = new Ext.form.Radio({
boxLabel:'sss',
name:this.name,
inputValue: 0
});
this.items.add(newRadio);
this.doLayout();
这段代码就可以去掉了。
[quote]飞雪无情 写道
你这双击的时候添加不上去,还有一种折中的方法,不是双击的时候添加radio,而是在渲染的时候,就是定义RadioGroup的时候在它的items里就多增加一个Radio,给其默认值0,默认不选中,隐藏。这样你的自定义双击事件的
var newRadio = new Ext.form.Radio({
boxLabel:'sss',
name:this.name,
inputValue: 0
});
this.items.add(newRadio);
this.doLayout();
这段代码就可以去掉了。
RadioGroup怎么加都加不上newRadio呢,好像是RadioGroup的关系,换其他的可以加上去。[/quote]
具体的我没看,你先用我说的这种折中的方法试试。
我感觉,你是在双击的时候添加的,当时其他的radio已经在页面上了,你要新增radio,肯定要重新渲染页面的,起码重新渲染RadioGroup这一块页面的。。
又不想一个个改页面。。嗯,话还说回来,我感觉改java代码挺快,有该不多少,就是把以前的判断逻辑去掉就行。比如以前是
[code="java"]
if(state!=null){//state对应radio的值,取到的
record.setState(state);
}
[/code]
那么现在就改成
[code="java"]
record.setState(state);
[/code]
这样的null值就代表客户什么都没选择。多好啊。还快!