0

这个:

$gridDataProvider = new CArrayDataProvider(array(
    array('id'=>1, 'firstName'=>'Mark', 'lastName'=>'Otto', 'language'=>'CSS'),
    array('id'=>2, 'firstName'=>'Jacob', 'lastName'=>'Thornton', 'language'=>'JavaScript'),
    array('id'=>3, 'firstName'=>'Stu', 'lastName'=>'Dent', 'language'=>'HTML'),
));


 $this->widget('bootstrap.widgets.BootGridView', array(
    'type'=>'striped bordered condensed',
    'dataProvider'=>$gridDataProvider,
    'template'=>"{items}",
    'columns'=>array(
        array('name'=>'id', 'header'=>'#'),
        array('name'=>'firstName', 'header'=>'First name'),
        array('name'=>'lastName', 'header'=>'Last name'),
        array('name'=>'language', 'header'=>'Language'),
        array(
            'class'=>'bootstrap.widgets.BootButtonColumn',
            'htmlOptions'=>array('style'=>'width: 50px'),
        ),
    ),
));

正在返回:

试图获取非对象的属性

菜单、按钮(和其他一切)工作正常。

4

3 回答 3

1

这是因为该示例使用 CArrayDataProvider 来填充网格。当您进入 BootButton(生成此列的类)以查看通过它运行的内容时,您会看到它正在尝试从 dataprovider 获取 primaryKey 属性,但是没有这样的属性,因为数据是数组类型的。

如果您打算使用按钮,则必须为您的网格传递一个 CActiveDataProvider。

所以尝试像这样使用:

$this->widget('bootstrap.widgets.BootGridView', array(
        'type'=>'striped bordered condensed',
        'dataProvider'=>$model->search(),
        'template'=>"{items}{pager}",
        'filter'=>$model,...

其中 $model 是控制器传递给视图的 CActiveRecord。

于 2012-06-07T22:45:48.737 回答
0

我不知道你在这个类中得到的代码是什么—— bootstrap.widgets.BootButtonColumn 但不管它是什么,这都是导致问题的原因。确保您已定义每个按钮的完整操作,以避免此问题。

我的意思是,对于按钮列中的每个按钮,将 url 设置为 -

'$this->grid->controller->createUrl("action_name", array("param_name" => "param_value"))'

这应该可以解决问题。

于 2012-05-20T23:23:46.803 回答
0

是Button Column缺少变量引起的应该是

array(
        'class'=>'bootstrap.widgets.BootButtonColumn',
        'htmlOptions'=>array('style'=>'width: 50px'),
                            'viewButtonUrl'=>null,
                            'updateButtonUrl'=>null,
                            'deleteButtonUrl'=>null,
    ),

//从这里转发

于 2013-02-04T04:41:46.580 回答