2013-01-04 48 views
3

我是Yii的新手,我需要在Yii中爲員工詳細信息製作一個GridView,因爲我遵循了程序在http://yii-booster.clevertech.biz/components.html#tables中提到。 我用一些示例數據創建了一個gridView,就像clevertech.biz所做的一樣,並且我成功了。但我的實際需求是在刪除條目之前創建一個帶彈出窗口的GridView,用於查看和編輯員工詳細信息以及javascript確認。這裏是我的代碼,它創建了一個網格和一個彈出窗口,但每個按鈕的操作都沒有分開,彈出窗口對特定列下的整個單元格,而不是該單元格中的按鈕起作用。任何人都可以幫我解決這個問題嗎?我如何在yii-booster bootstrap小部件中彈出一個gridView的按鈕彈出對話框

$stu->id = 3; 
$stu->name = 'Stu'; 
$stu->address = 'Dent'; 
$stu->position = 'SE'; 
$stu->joinDate = '2012-12-14'; 
$stu->age = 30; 
$stu->phone = 1112226789; 


$persons = array($mark, $jacob, $stu); 
$gridDataProvider = new CArrayDataProvider($persons); 

// $gridColumns 
$gridColumns = array(
    array('name'=>'id', 'header'=>'#', 'htmlOptions'=>array('style'=>'width: 60px')), 
    array('name'=>'name', 'header'=>'Name'), 
    array('name'=>'address', 'header'=>'Address'), 
    array('name'=>'position', 'header'=>'Position'), 
    array('name'=>'joinDate', 'header'=>'Join Date'), 
    array('name'=>'age', 'header'=>'Age'), 
    array('name'=>'phone', 'header'=>'Phone'), 

    array('header'=>'Options', 
     'htmlOptions' => array('data-toggle'=>'modal', 
     'data-target'=>'#myModal'), 
     'class'=>'bootstrap.widgets.TbButtonColumn', 
     'viewButtonUrl'=>null, 
     'updateButtonUrl'=>null, 
     'deleteButtonUrl'=>null,), 


); 


$this->widget('bootstrap.widgets.TbExtendedGridView', array(
    'type'=>'bordered', 
    'dataProvider'=>$gridDataProvider, 
    'template'=>"{items}", 
    'columns'=>$gridColumns, 
)); 
?> 

<!-- View Popup --> 
<?php  
$this->beginWidget('bootstrap.widgets.TbModal', array('id'=>'myModal')); ?> 

<!-- Popup Header --> 
<div class="modal-header"> 
<h4>View Employee Details</h4> 
</div> 

<!-- Popup Content --> 
<div class="modal-body"> 
<p>Employee Details</p> 
</div> 


<!-- Popup Footer --> 
<div class="modal-footer"> 

<!-- save button --> 
<?php $this->widget('bootstrap.widgets.TbButton', array(
'type'=>'primary', 
'label'=>'Save', 
'url'=>'#', 
'htmlOptions'=>array('data-dismiss'=>'modal'), 
)); ?> 
<!-- save button end--> 

<!-- close button --> 
<?php $this->widget('bootstrap.widgets.TbButton', array(
'label'=>'Close', 
'url'=>'#', 
'htmlOptions'=>array('data-dismiss'=>'modal'), 
)); ?> 
<!-- close button ends--> 
</div> 
<?php $this->endWidget(); ?> 
<!-- View Popup ends --> 

回答

4

我的專欄有點不同,但我想你會明白。

你必須改變你的TbButtonColumn這樣:

$this->widget('bootstrap.widgets.TbExtendedGridView', array(
    'type'=>'bordered', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'template'=>"{items}", 
    'columns'=>array(
     'id', 
     'firstName', 
     'lastName', 
     'language', 
     'hours', 
     array(
      'header'=>'Options', 
      'class'=>'bootstrap.widgets.TbButtonColumn', 
      'buttons'=>array(
       'view'=> 
        array(
         'url'=>'Yii::app()->createUrl("person/view", array("id"=>$data->id))', 
         'options'=>array(
          'ajax'=>array(
           'type'=>'POST', 
           'url'=>"js:$(this).attr('href')", 
           'success'=>'function(data) { $("#viewModal .modal-body p").html(data); $("#viewModal").modal(); }' 
          ), 
         ), 
        ), 
      ), 
     ) 
    ))); 
?> 

<!-- View Popup --> 
<?php $this->beginWidget('bootstrap.widgets.TbModal', array('id'=>'viewModal')); ?> 
<!-- Popup Header --> 
<div class="modal-header"> 
<h4>View Employee Details</h4> 
</div> 
<!-- Popup Content --> 
<div class="modal-body"> 
<p>Employee Details</p> 
</div> 
<!-- Popup Footer --> 
<div class="modal-footer"> 

<!-- close button --> 
<?php $this->widget('bootstrap.widgets.TbButton', array(
    'label'=>'Close', 
    'url'=>'#', 
    'htmlOptions'=>array('data-dismiss'=>'modal'), 
)); ?> 
<!-- close button ends--> 
</div> 
<?php $this->endWidget(); ?> 
<!-- View Popup ends --> 

和你的actionView從personController這樣:

public function actionView($id) 
{ 
    if(Yii::app()->request->isAjaxRequest) 
     { 
     $this->renderPartial('view',array(
      'model'=>$this->loadModel($id), 
     ), false, true); 
    } 
    else 
    { 
     $this->render('view',array(
      'model'=>$this->loadModel($id), 
     )); 
    } 
} 

,然後,所有你需要做的是做同樣的與您的更新的東西。

如果您無法理解任何內容,請隨時提出任何問題。

+1

感謝您覆蓋按鈕的url的示例。 –

0

參見:TbButtonColumn類文件(TbButtonColumn.php)

@參數陣列$按鈕的按鈕配置,其可含有 '標籤', 'URL', 'IMAGEURL' 和 '選項' 的元件。

array(
       'class'=>'bootstrap.widgets.TbButtonColumn', 
       'buttons'=>array(
         'view'=>array(
          'visible'=>'true/false', 
          'label'=>'Description', 
          'url'=>'link', 
          'imageUrl'=>'linkImage', 
          'options'=>array(
          ), 
         ), 
       ), 
    ),