将Yii CGridView的可选行限制为复选框列
Restricting selectable row of Yii CGridView to checkbox column
我使用Yii,这里有一个CGridView,其中有一个CCheckBoxColumn作为定义列的一部分。
this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $dataProvider,
'filter' => $model,
'columns' => $columns
),
'selectableRows'=>2
));
将selectableRows设置为2会使单击网格视图中行的任何部分也"选中/取消选中"该行。这是一个有用的功能,因此用户将不再需要勾选复选框图标,特别是在复选框图标很小的情况下。
不幸的是,我需要将复选框勾选限制为仅在单击复选框图标/输入元素本身或至少在中的列时切换,而不在行的任何其他列中。这个功能似乎还没有或不会实现,我想以某种方式覆盖Js来实现这一点,但我不知道从哪里开始。谢谢
在'columns'
中,您应该添加新的数组作为第一个元素,如下所示:
array(
'class' => 'CCheckBoxColumn',
'id'=>'selectableColumn',
'selectableRows'=>2,
),
并从数组索引'selectableRows'
中删除。这个数组是列的配置,里面有复选框。所以,基本上,你应该添加到上面给出的$columns
变量数组中。以下是示例:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $dataProvider,
'filter' => $model,
'columns' => array( // <- this is your $columns variable!
array( // <- just add this array to your $columns var
'class' => 'CCheckBoxColumn',
'id'=>'selectableColumn',
'selectableRows'=>2,
),
'columnName1',
'columnName2',
...
),
));
您可以在代码中覆盖js,请参阅下面的示例:
停止点击事件在网格tr
上传播的代码
Yii::app()->clientScript->registerScript('tr-event-propagation', '$(".grid-view tr").click(function(event){
event.stopPropagation();
});');
要在行中添加复选框的列阵列的代码
array(
'class' => 'CCheckBoxColumn',
'selectableRows' => null,
'htmlOptions' => array(
'onclick' => 'js: $(this).find("input").trigger("click")'
),
'checkBoxHtmlOptions' => array(
'onclick' => 'js: $(this).trigger("click")'
),
'selectableRows' => 2
),
希望这个解决方案能帮助你
注意:使用event.stopPropagation();
可能会中断与tr或tr 的其他元素的其他javascript绑定
相关文章:
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 正在验证8个真/假复选框或复选框中的2个
- 为复选框javascript指定两个值
- 如何在单击复选框后调用控制器方法
- 从复选框和Selects-KnockoutJS中获取值的总和
- 选中多个具有相同名称的复选框
- 使用Jquery选择或取消选择ListView中的所有复选框
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 使用$.ajax发布多个复选框
- AngularJS单选筛选不适用于Name、Description和Field4复选框值
- 使用jquery选中/取消选中单个复选框
- Angular JS Filter-通过3个复选框进行筛选
- 如果选中了多个复选框,如何添加事件
- Javascript复选框函数:;缺少:在属性id之后"
- JavaScript-切换“;全部检查”;复选框true/false
- 如何在 Yii javascript 中使用复选框隐藏或显示文本字段
- 如果在 Yii 中选中复选框,则弹出一个窗口
- Yii框架:如何检查复选框是否被选中
- 将Yii CGridView的可选行限制为复选框列
- 使用javascript获取Yii中选中复选框的所有ID