Yii CGridView中的自定义列,带有按钮下拉列表';s推特引导
我只是为CGridView列创建了一个。该按钮包含子菜单,每个子菜单都具有href、class、data等属性。。它可以通过CGridView小部件中的属性设置 鉴于Yii CGridView中的自定义列,带有按钮下拉列表';s推特引导,yii,twitter-bootstrap-3,cbuttoncolumn,Yii,Twitter Bootstrap 3,Cbuttoncolumn,我只是为CGridView列创建了一个。该按钮包含子菜单,每个子菜单都具有href、class、data等属性。。它可以通过CGridView小部件中的属性设置 鉴于 $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider, 'ajaxUpdate'=>false, 'columns'=>array( array(
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'ajaxUpdate'=>false,
'columns'=>array(
array(
'name'=>'ID',
'type'=>'raw',
'value'=>'$data->ID',
),
array(
'name'=>'NAME',
'type'=>'raw',
'value'=>'$data->NAME',
),
array(
'class'=>'BootstrapButtonDropdownColumn',
'name'=>'',
'sortable'=>false,
'dropdownMenuItems'=>array(
array('label'=>'<i class="icon-edit"></i> Edit', 'link'=>$this->createUrl('site/update')),
array('itemClass'=>'divider'),
array('label'=>'<i class="icon-remove"></i> Remove', 'link'=>'#', 'itemHtmlOptions'=>array('class'=>'remove-item','data-id'=>'$data->ID','data-toggle'=>'modal'))
),
),
),
$this->widget('zii.widgets.grid.CGridView',数组(
“dataProvider”=>$dataProvider,
“ajaxUpdate”=>错误,
'列'=>数组(
排列(
'name'=>'ID',
'type'=>'raw',
'值'=>'$data->ID',
),
排列(
“名称”=>“名称”,
'type'=>'raw',
'value'=>'$data->NAME',
),
排列(
'class'=>'BootstrapButtonDropdownColumn',
'名称'=>'',
'sortable'=>false,
'dropdownMenuItems'=>数组(
数组('label'=>'Edit','link'=>$this->createUrl('site/update')),
数组('itemClass'=>'divider'),
数组('label'=>'Remove','link'=>'#','itemHtmlOptions'=>array('class'=>'Remove-item','data-id'=>'$data->id','data-toggle'=>'modal'))
),
),
),
类文件
class BootstrapButtonDropdownColumn extends CDataColumn {
public $buttonLabel = 'Action';
public $buttonClass = 'btn btn-small dropdown-toggle';
public $buttonHtmlOptions=array();
public $dropdownMenuItems=array();
protected function renderDataCellContent($row, $data)
{
$html = '<div class="btn-group pull-right">';
$buttonOption = $this->buttonHtmlOptions;
$buttonOption['class'] = $this->buttonClass;
$buttonOption['data-toggle'] = 'dropdown';
$html .= CHtml::htmlButton($this->buttonLabel . ' <span class="caret"></span>', $buttonOption);
$html .= '<ul class="dropdown-menu">';
for ($i=0; $i<count($this->dropdownMenuItems); $i++)
{
if (isset($this->dropdownMenuItems[$i]['itemClass']))
$html .= '<li class="' . $this->dropdownMenuItems[$i]['itemClass'] . '">';
else
$html .= '<li>';
$label = '';
$link = '#';
$itemHtmlOptions = null;
if (isset($this->dropdownMenuItems[$i]['label']))
$label = $this->dropdownMenuItems[$i]['label'];
if (isset($this->dropdownMenuItems[$i]['link']) && !empty($this->dropdownMenuItems[$i]['link']))
$link = $this->dropdownMenuItems[$i]['link'];
if (isset($this->dropdownMenuItems[$i]['itemHtmlOptions']))
$itemHtmlOptions = $this->dropdownMenuItems[$i]['itemHtmlOptions'];
$html .= CHtml::link($label, $link, $itemHtmlOptions);
$html .= '</li>';
}
$html .= '</ul></div>';
echo $html;
}
}
类BootstrapButtonDropdownColumn扩展CDATA列{
public$buttonLabel='Action';
public$buttonClass='btn btn小型下拉开关';
public$buttonHtmlOptions=array();
public$dropdownMenuItems=array();
受保护的函数renderDataCellContent($row,$data)
{
$html='';
$buttonOption=$this->buttonhtmoptions;
$buttonOption['class']=$this->buttonClass;
$buttonOption['data-toggle']='dropdown';
$html.=CHtml::htmlButton($this->buttonLabel.',$buttonOption);
$html.=';
对于($i=0;$idropdownMenuItems);$i++)
{
如果(isset($this->dropdownMenuItems[$i]['itemClass']))
$html.='- ;
其他的
$html.='
- ';
$label='';
$link='#';
$itemHtmlOptions=null;
如果(isset($this->dropdownMenuItems[$i]['label']))
$label=$this->dropdownMenuItems[$i]['label'];
if(设置($this->dropdownMenuItems[$i]['link'])和&!empty($this->dropdownMenuItems[$i]['link']))
$link=$this->dropdownMenuItems[$i]['link'];
if(设置($this->dropdownMenuItems[$i]['itemHtmlOptions']))
$itemHtmlOptions=$this->dropdownMenuItems[$i]['itemHtmlOptions'];
$html.=CHtml::link($label、$link、$itemHtmlOptions);
$html.='
';
}
$html.='
';
echo$html;
}
}
出现问题,我想将值设置为“删除”菜单项上的“数据id”属性,但它不起作用。当在浏览器元素中查看时,检查数据id不包含记录id,而是显示字符串$data->id
<div class="btn-group pull-right open">
<button class="btn btn-small dropdown-toggle" data-toggle="dropdown" name="yt0" type="button">
Action <span class="caret"></span>
</button>
<ul class="dropdown-menu">
<li><a href="/site/update"><i class="icon-edit"></i> Edit</a></li>
<li class="divider"><a href="#"></a></li>
<li><a class="remove-item" data-id="$data->ID" data-toggle="modal" href="#"><i class="icon-remove"></i> Remove</a></li>
</ul>
</div>
行动
或者看看这个
请给我一些建议,谢谢
谢谢你的建议,但是,还有别的方法可以把身份证传递到课堂上吗
您可以访问$row
和$data
。我想您只需在自定义按钮类的下面添加更多内容即可
if (isset($this->dropdownMenuItems[$i]['itemHtmlOptions'])){
$itemHtmlOptions = $this->dropdownMenuItems[$i]['itemHtmlOptions'];
$itemHtmlOptions['data-id'] = $data->ID; // <==added line, maybe you want to use condition or put it somewhere else instead, depend your decision
}
if(isset($this->dropdownMenuItems[$i]['itemHtmlOptions')){
$itemHtmlOptions=$this->dropdownMenuItems[$i]['itemHtmlOptions'];
$itemHtmlOptions['data-id']=$data->ID;//这太奇怪了,即使它是错的,它也应该显示$data->ART\u CAT\u ID而不是$data->idy您的代码是错的,因为您无法访问$data,而html选项将直接传递到自定义类,如value
treat with columnexpression@Telvin对不起,我的错。@Telvin Nguyen谢谢你的建议,但是还有别的方法可以把id传给课堂吗?我已经把我的答案推到下面,看看。做得很好,谢谢伙计。