jQuery MiniUI

标题: 请教关于DataGrid中checkbox的问题 [打印本页]

作者: zhs0110    时间: 2016-6-20 16:34:05     标题: 请教关于DataGrid中checkbox的问题

DataGrid列表中,有个列用到了checkbox,
为了根据值的不同(1或0)把每一行这个列中的复选框设置成不同状态(禁用或可用),我使用了监听函数drawcell,通过e.cellHtml把它们分别换成了
if(value=="1"){
      e.cellHtml = '<input type="checkbox" checked="checked" /> '; //可以用
}
if(value=="0"){
      e.cellHtml = '<input type="checkbox" disabled="true" /> '; //不准用
}
这样一来呢,就会达到上面说的那个目的,而且事先值为1的会默认勾上。但是问题来了,因为DataGrid的中是这样的
<div field="SENDWMS" type="checkboxcolumn" headerAlign="center" align="center" trueValue="1" falseValue="0" width="100">可发送通知</div>
我把默认勾上的值为1的复选框取消后,在js的function拿到的值仍然是1,而不是0。所以请版主帮助下。

作者: felt    时间: 2016-6-20 16:42:42

你只关联了数据到checkbox,没有把checkbox的改变关联到数据,必须处理checkbox的事件,点击之后改变值数据里面的值
作者: zhs0110    时间: 2016-6-20 16:46:35

版主能否给些关于这个事件的代码上的参考
作者: felt    时间: 2016-6-20 17:27:51

zhs0110 发表于 2016-6-20 16:46
版主能否给些关于这个事件的代码上的参考
  1. if (value == 1) {
  2.                     e.cellHtml = '<input type="checkbox"  onclick="onClick()"   checked="checked" //>';
  3.                 } else {
  4.                     e.cellHtml = '<input type="checkbox" disabled=true" />';
  5.                 }

  6. function onClick() {
  7.                 var row = grid.getSelected();
  8.                 grid.updateRow(row, { xxx: 0 });
  9.        
复制代码

作者: zhs0110    时间: 2016-6-20 18:09:25

感谢版主!
作者: zhs0110    时间: 2016-6-20 18:55:00

版主,之前的问题解决了,但新的一个问题出现了,如果像这里用onclick的话,我发现设为可用状态的复选框只用一次就被禁用了,如果用API上的valueChange或另一个的话,可以随便用多少次,但当你点击提交按钮后拿到的值依然不是想要的。
作者: felt    时间: 2016-6-21 09:32:59

zhs0110 发表于 2016-6-20 18:55
版主,之前的问题解决了,但新的一个问题出现了,如果像这里用onclick的话,我发现设为可用状态的复选框只 ...

现在绘制的是原生的checkbox,不是什么MiniUI控件,事件需要你处理
你可以这样
1 绘制成选中的checkbox
2 绘制成禁用的checkbox
3 绘制成未选中的checkbox
1,3两个状态的checkbox绑点击事件来更新状态
作者: zhs0110    时间: 2016-6-21 16:23:07

不是,我现在的情况是用了drawcell事件,能根据返回的值设置某个列的复选框是否可用,而且在通过e.html把之前的东西替换成普通复选框后,可以获得值了,但问题在于你只能点一次就被禁用了,不知道有什么办法能解决这个问题,最好能给点代码参考一下。
作者: zhs0110    时间: 2016-6-21 16:29:18

[attach]7572[/attach][attach]7573[/attach][attach]7574[/attach]

作者: felt    时间: 2016-6-21 16:36:33

zhs0110 发表于 2016-6-21 16:29

既然已经绘制了,就不要用checkboxcolumn
按你的绘制,只有两个状态,1个是选中可点击的checkbox,1个是禁用的,你不就只能在这两种间切换

请参考7楼的回复,绘制多种状态的checkbox,1选中可点击,2未选中禁用,3未选中可点击,
1,3两种状态的checkbox绑定点击事件来回切换
grid.on("drawcell",function(e){
   var value=e.value;
   if(field==""){
          if(value==1)  ....
          if(value==2)....
          if(value==3)....
   }

})

作者: zhs0110    时间: 2016-6-21 17:45:00

感谢版主帮助,除了value==1(默认勾上且可用状态)和value==0(不可用状态)两种状态外,我增加了一个value==-1(没勾上但可用状态),它的目的就是和value==1进行状态间的切换。默认勾上且可用的状态时,当我点一下,就通过单击事件把value改成-1,变成了没勾上但可用状态(也就是勾被取消了),但我再点一下的时候,就会通过单击事件把value改成1,变成了勾上且可用状态(即又被勾上了)。再次表示感谢。





欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2