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

ボタン列に変数がないことが原因です。

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

//ここから再投稿

于 2013-02-04T04:41:46.580 に答える
0

このクラスで取得したコードが何であるかわかりません-bootstrap.widgets.BootButtonColumnしかし、それが何であれ、これが問題の原因です。この問題を回避するために、各ボタンの完全なアクションが定義されていることを確認してください。

つまり、ボタン列のすべてのボタンに対して、URLを次のように設定します-

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

これで問題は解決するはずです。

于 2012-05-20T23:23:46.803 に答える